@spawnite/engine 0.1.0-beta.15

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 (2563) hide show
  1. package/LICENSE.md +169 -0
  2. package/README.md +92 -0
  3. package/dist/-MLBVTaO.js +1 -0
  4. package/dist/28wIPE7L.js +1 -0
  5. package/dist/3rj0AvB6.js +1 -0
  6. package/dist/5L-NcwKR.js +1 -0
  7. package/dist/B-qLcgSf.js +1 -0
  8. package/dist/B0WN1jqX.js +41 -0
  9. package/dist/B1OUgdbN.js +1 -0
  10. package/dist/BEL83Bb6.js +1 -0
  11. package/dist/BGDOC3Q-.js +1 -0
  12. package/dist/BGM1SnEr.js +1 -0
  13. package/dist/BH6Ftfg9.js +1 -0
  14. package/dist/BJIJuxaE.js +1 -0
  15. package/dist/BJclgjKG.js +1 -0
  16. package/dist/BKc2k2s6.js +1 -0
  17. package/dist/BLB4-b4b.js +2 -0
  18. package/dist/BQnBIIt8.js +1 -0
  19. package/dist/BR3nbYwS.js +7 -0
  20. package/dist/BV9hGHeu.js +623 -0
  21. package/dist/BWOKsReG.js +1 -0
  22. package/dist/BWlq9jqw.js +1 -0
  23. package/dist/BXmxKBbF.js +3 -0
  24. package/dist/BYXhtwWy.js +1 -0
  25. package/dist/B_HFa2lJ.js +1 -0
  26. package/dist/BciVglt5.js +1 -0
  27. package/dist/Bfg1Y9_2.js +1 -0
  28. package/dist/Bh-CVkQx.js +1 -0
  29. package/dist/BiH9xCBB.js +1 -0
  30. package/dist/BobsCMiL.js +9 -0
  31. package/dist/Bp238wbZ.js +1 -0
  32. package/dist/Bpe0g5hX.js +1 -0
  33. package/dist/BrfUaL46.js +2 -0
  34. package/dist/Bw06YsIc.js +1 -0
  35. package/dist/Bydoy8wO.js +1 -0
  36. package/dist/BzaiZux2.js +1 -0
  37. package/dist/C25qqozO.js +1 -0
  38. package/dist/C6Ja5Z7G.js +1 -0
  39. package/dist/CCh4CnV9.js +1 -0
  40. package/dist/CEuuijY1.js +1 -0
  41. package/dist/CHntUxHl.js +1 -0
  42. package/dist/CIq9KviM.js +1 -0
  43. package/dist/CQPA3y5T.js +1 -0
  44. package/dist/CRfoqBKG.js +1 -0
  45. package/dist/CSXcU95U.js +1 -0
  46. package/dist/CU0epHFG.js +3 -0
  47. package/dist/CVgRrBP4.js +1 -0
  48. package/dist/CZV99t6a.js +7 -0
  49. package/dist/Cg33N9Ej.js +1 -0
  50. package/dist/Chcm92bZ.js +1 -0
  51. package/dist/CjiCdqiE.js +2 -0
  52. package/dist/Cp5beIll.js +1 -0
  53. package/dist/Cq6VqPHb.js +2 -0
  54. package/dist/CwZDkslT.js +1 -0
  55. package/dist/D3Y2LHFe.js +1 -0
  56. package/dist/D3wyrZ2_.js +1 -0
  57. package/dist/D8jIS84n.js +1 -0
  58. package/dist/DCIejHqp.js +1 -0
  59. package/dist/DHsBnfoU.js +1 -0
  60. package/dist/DJSpRhXB.js +1 -0
  61. package/dist/DOeUeeKs.js +1 -0
  62. package/dist/DR9bHgf0.js +1 -0
  63. package/dist/DRnuSAbu.js +1 -0
  64. package/dist/DSb1ApLU.js +1 -0
  65. package/dist/DXtppcZ7.js +1 -0
  66. package/dist/DZIhHLUn.js +1 -0
  67. package/dist/DgMhVbMU.js +1 -0
  68. package/dist/Dh5kh1nX.js +1 -0
  69. package/dist/DiGFL8kd.js +1 -0
  70. package/dist/DkKmurqu.js +1 -0
  71. package/dist/DlkDsMQd.js +1 -0
  72. package/dist/DnNEzpz-.js +1 -0
  73. package/dist/Dqx9hHBK.js +1 -0
  74. package/dist/DsgWLyZo.js +1 -0
  75. package/dist/DucRBEvN.js +1 -0
  76. package/dist/Dwcms3jX.js +1 -0
  77. package/dist/Dwfie-ev.js +1 -0
  78. package/dist/DyHjwN2H.js +1 -0
  79. package/dist/SMby3e6M.js +4 -0
  80. package/dist/THIRD-PARTY-NOTICES +329 -0
  81. package/dist/UJDr3Nrd.js +1 -0
  82. package/dist/V70ADx0g.js +2 -0
  83. package/dist/abilities.d.ts +1 -0
  84. package/dist/abilities.js +1 -0
  85. package/dist/core.d.ts +1 -0
  86. package/dist/core.js +1 -0
  87. package/dist/devtools.d.ts +1 -0
  88. package/dist/devtools.js +1 -0
  89. package/dist/dragAndDrop.d.ts +1 -0
  90. package/dist/dragAndDrop.js +1 -0
  91. package/dist/eYC1fQo5.js +1 -0
  92. package/dist/eslint.js +1 -0
  93. package/dist/hQBGE7c4.js +1 -0
  94. package/dist/index.d.ts +1 -0
  95. package/dist/index.js +297 -0
  96. package/dist/internal/cli.js +1 -0
  97. package/dist/internal/devServer.js +2 -0
  98. package/dist/internal/devtools.js +1 -0
  99. package/dist/internal/room.js +1 -0
  100. package/dist/inventory.d.ts +1 -0
  101. package/dist/inventory.js +1 -0
  102. package/dist/jMKXPXIH.js +33 -0
  103. package/dist/looks/dusk.d.ts +1 -0
  104. package/dist/looks/dusk.js +1 -0
  105. package/dist/looks/morning.d.ts +1 -0
  106. package/dist/looks/morning.js +1 -0
  107. package/dist/looks/night.d.ts +1 -0
  108. package/dist/looks/night.js +1 -0
  109. package/dist/looks/noon.d.ts +1 -0
  110. package/dist/looks/noon.js +1 -0
  111. package/dist/looks/overcast.d.ts +1 -0
  112. package/dist/looks/overcast.js +1 -0
  113. package/dist/npcs.d.ts +1 -0
  114. package/dist/npcs.js +1 -0
  115. package/dist/public.d.ts +18818 -0
  116. package/dist/replay.d.ts +1 -0
  117. package/dist/replay.js +1 -0
  118. package/dist/testing.d.ts +542 -0
  119. package/dist/testing.js +1 -0
  120. package/dist/three.d.ts +1 -0
  121. package/dist/three.js +1 -0
  122. package/dist/tracks.d.ts +1 -0
  123. package/dist/tracks.js +1 -0
  124. package/dist/vite.d.ts +123 -0
  125. package/dist/vite.js +1 -0
  126. package/dist/weapons.d.ts +1 -0
  127. package/dist/weapons.js +1 -0
  128. package/dist/wiki/engine/ai/metadata.md +143 -0
  129. package/dist/wiki/engine/audio/sound.md +72 -0
  130. package/dist/wiki/engine/audio/voice.md +153 -0
  131. package/dist/wiki/engine/behaviours/abilities.md +328 -0
  132. package/dist/wiki/engine/behaviours/bob.md +37 -0
  133. package/dist/wiki/engine/behaviours/chase.md +158 -0
  134. package/dist/wiki/engine/behaviours/cooldowns.md +83 -0
  135. package/dist/wiki/engine/behaviours/dialog.md +172 -0
  136. package/dist/wiki/engine/behaviours/health.md +330 -0
  137. package/dist/wiki/engine/behaviours/interact.md +41 -0
  138. package/dist/wiki/engine/behaviours/inventory.md +266 -0
  139. package/dist/wiki/engine/behaviours/loot.md +90 -0
  140. package/dist/wiki/engine/behaviours/pickup.md +149 -0
  141. package/dist/wiki/engine/behaviours/resources.md +274 -0
  142. package/dist/wiki/engine/behaviours/routines.md +99 -0
  143. package/dist/wiki/engine/behaviours/spin.md +36 -0
  144. package/dist/wiki/engine/behaviours/stats.md +220 -0
  145. package/dist/wiki/engine/behaviours/targeting.md +155 -0
  146. package/dist/wiki/engine/behaviours/track-mover.md +121 -0
  147. package/dist/wiki/engine/behaviours/track-trigger.md +117 -0
  148. package/dist/wiki/engine/behaviours/trigger.md +158 -0
  149. package/dist/wiki/engine/behaviours/weapon.md +462 -0
  150. package/dist/wiki/engine/entities/camera.md +326 -0
  151. package/dist/wiki/engine/entities/entity.mdx +1063 -0
  152. package/dist/wiki/engine/entities/npc.md +64 -0
  153. package/dist/wiki/engine/entities/player.md +435 -0
  154. package/dist/wiki/engine/errors/SP0001.md +20 -0
  155. package/dist/wiki/engine/errors/SP0002.md +20 -0
  156. package/dist/wiki/engine/errors/SP0003.md +20 -0
  157. package/dist/wiki/engine/errors/SP0008.md +20 -0
  158. package/dist/wiki/engine/errors/SP0009.md +20 -0
  159. package/dist/wiki/engine/errors/SP0010.md +20 -0
  160. package/dist/wiki/engine/errors/SP0011.md +20 -0
  161. package/dist/wiki/engine/errors/SP0014.md +20 -0
  162. package/dist/wiki/engine/errors/SP0015.md +20 -0
  163. package/dist/wiki/engine/errors/SP0016.md +20 -0
  164. package/dist/wiki/engine/errors/SP0017.md +20 -0
  165. package/dist/wiki/engine/errors/SP0018.md +20 -0
  166. package/dist/wiki/engine/errors/SP0019.md +20 -0
  167. package/dist/wiki/engine/errors/SP0020.md +20 -0
  168. package/dist/wiki/engine/errors/SP0021.md +20 -0
  169. package/dist/wiki/engine/errors/SP0022.md +20 -0
  170. package/dist/wiki/engine/errors/SP0023.md +20 -0
  171. package/dist/wiki/engine/errors/SP0024.md +20 -0
  172. package/dist/wiki/engine/errors/SP0025.md +20 -0
  173. package/dist/wiki/engine/errors/SP0026.md +22 -0
  174. package/dist/wiki/engine/errors/SP0027.md +20 -0
  175. package/dist/wiki/engine/errors/SP0028.md +20 -0
  176. package/dist/wiki/engine/errors/SP0029.md +20 -0
  177. package/dist/wiki/engine/errors/SP0030.md +20 -0
  178. package/dist/wiki/engine/errors/SP0031.md +20 -0
  179. package/dist/wiki/engine/errors/SP0034.md +20 -0
  180. package/dist/wiki/engine/errors/SP0035.md +20 -0
  181. package/dist/wiki/engine/errors/SP0036.md +20 -0
  182. package/dist/wiki/engine/errors/SP0037.md +20 -0
  183. package/dist/wiki/engine/errors/SP0038.md +20 -0
  184. package/dist/wiki/engine/errors/SP0039.md +20 -0
  185. package/dist/wiki/engine/errors/SP0040.md +20 -0
  186. package/dist/wiki/engine/errors/SP0041.md +20 -0
  187. package/dist/wiki/engine/errors/SP0042.md +20 -0
  188. package/dist/wiki/engine/errors/SP0043.md +20 -0
  189. package/dist/wiki/engine/errors/SP0045.md +20 -0
  190. package/dist/wiki/engine/errors/SP0046.md +20 -0
  191. package/dist/wiki/engine/errors/SP0047.md +20 -0
  192. package/dist/wiki/engine/errors/SP0048.md +20 -0
  193. package/dist/wiki/engine/errors/SP0049.md +20 -0
  194. package/dist/wiki/engine/errors/SP0050.md +20 -0
  195. package/dist/wiki/engine/errors/SP0051.md +20 -0
  196. package/dist/wiki/engine/errors/SP0052.md +20 -0
  197. package/dist/wiki/engine/errors/SP0053.md +20 -0
  198. package/dist/wiki/engine/errors/SP0054.md +20 -0
  199. package/dist/wiki/engine/errors/SP0055.md +20 -0
  200. package/dist/wiki/engine/errors/SP0056.md +20 -0
  201. package/dist/wiki/engine/errors/SP0057.md +20 -0
  202. package/dist/wiki/engine/errors/SP0058.md +20 -0
  203. package/dist/wiki/engine/errors/SP0059.md +20 -0
  204. package/dist/wiki/engine/errors/SP0060.md +20 -0
  205. package/dist/wiki/engine/errors/SP0061.md +20 -0
  206. package/dist/wiki/engine/errors/SP0064.md +20 -0
  207. package/dist/wiki/engine/errors/SP0065.md +20 -0
  208. package/dist/wiki/engine/errors/SP0066.md +20 -0
  209. package/dist/wiki/engine/errors/SP0067.md +20 -0
  210. package/dist/wiki/engine/errors/SP0070.md +20 -0
  211. package/dist/wiki/engine/errors/SP0071.md +20 -0
  212. package/dist/wiki/engine/errors/SP0072.md +20 -0
  213. package/dist/wiki/engine/errors/SP0073.md +20 -0
  214. package/dist/wiki/engine/errors/SP0074.md +20 -0
  215. package/dist/wiki/engine/errors/SP0075.md +20 -0
  216. package/dist/wiki/engine/errors/SP0076.md +20 -0
  217. package/dist/wiki/engine/errors/SP0077.md +20 -0
  218. package/dist/wiki/engine/errors/SP0078.md +20 -0
  219. package/dist/wiki/engine/errors/SP0079.md +20 -0
  220. package/dist/wiki/engine/errors/SP0080.md +20 -0
  221. package/dist/wiki/engine/errors/SP0081.md +20 -0
  222. package/dist/wiki/engine/errors/SP0082.md +20 -0
  223. package/dist/wiki/engine/errors/SP0083.md +20 -0
  224. package/dist/wiki/engine/errors/SP0084.md +20 -0
  225. package/dist/wiki/engine/errors/SP0085.md +20 -0
  226. package/dist/wiki/engine/errors/SP0086.md +20 -0
  227. package/dist/wiki/engine/errors/SP0087.md +20 -0
  228. package/dist/wiki/engine/errors/SP0089.md +20 -0
  229. package/dist/wiki/engine/errors/SP0090.md +20 -0
  230. package/dist/wiki/engine/errors/SP0091.md +20 -0
  231. package/dist/wiki/engine/errors/SP0092.md +20 -0
  232. package/dist/wiki/engine/errors/SP0093.md +20 -0
  233. package/dist/wiki/engine/errors/SP0094.md +20 -0
  234. package/dist/wiki/engine/errors/SP0095.md +20 -0
  235. package/dist/wiki/engine/errors/SP0096.md +20 -0
  236. package/dist/wiki/engine/errors/SP0097.md +20 -0
  237. package/dist/wiki/engine/errors/SP0098.md +20 -0
  238. package/dist/wiki/engine/errors/SP0099.md +20 -0
  239. package/dist/wiki/engine/errors/SP0100.md +20 -0
  240. package/dist/wiki/engine/errors/SP0101.md +20 -0
  241. package/dist/wiki/engine/errors/SP0102.md +20 -0
  242. package/dist/wiki/engine/errors/SP0103.md +20 -0
  243. package/dist/wiki/engine/errors/SP0104.md +20 -0
  244. package/dist/wiki/engine/errors/SP0105.md +20 -0
  245. package/dist/wiki/engine/errors/SP0106.md +20 -0
  246. package/dist/wiki/engine/errors/SP0107.md +20 -0
  247. package/dist/wiki/engine/errors/SP0108.md +20 -0
  248. package/dist/wiki/engine/errors/SP0109.md +20 -0
  249. package/dist/wiki/engine/errors/SP0110.md +20 -0
  250. package/dist/wiki/engine/errors/SP0111.md +20 -0
  251. package/dist/wiki/engine/errors/SP0112.md +20 -0
  252. package/dist/wiki/engine/errors/SP0113.md +20 -0
  253. package/dist/wiki/engine/errors/SP0114.md +20 -0
  254. package/dist/wiki/engine/errors/SP0115.md +20 -0
  255. package/dist/wiki/engine/errors/SP0116.md +20 -0
  256. package/dist/wiki/engine/errors/SP0117.md +20 -0
  257. package/dist/wiki/engine/errors/SP0118.md +20 -0
  258. package/dist/wiki/engine/errors/SP0119.md +20 -0
  259. package/dist/wiki/engine/errors/SP0120.md +20 -0
  260. package/dist/wiki/engine/errors/SP0121.md +20 -0
  261. package/dist/wiki/engine/errors/SP0122.md +20 -0
  262. package/dist/wiki/engine/errors/SP0125.md +20 -0
  263. package/dist/wiki/engine/errors/SP0126.md +20 -0
  264. package/dist/wiki/engine/errors/SP0132.md +20 -0
  265. package/dist/wiki/engine/errors/SP0133.md +20 -0
  266. package/dist/wiki/engine/errors/SP0134.md +20 -0
  267. package/dist/wiki/engine/errors/SP0137.md +20 -0
  268. package/dist/wiki/engine/errors/SP0138.md +20 -0
  269. package/dist/wiki/engine/errors/SP0139.md +20 -0
  270. package/dist/wiki/engine/errors/SP0143.md +20 -0
  271. package/dist/wiki/engine/errors/SP0145.md +20 -0
  272. package/dist/wiki/engine/errors/SP0146.md +20 -0
  273. package/dist/wiki/engine/errors/SP0147.md +20 -0
  274. package/dist/wiki/engine/errors/SP0148.md +20 -0
  275. package/dist/wiki/engine/errors/SP0149.md +20 -0
  276. package/dist/wiki/engine/errors/SP0150.md +20 -0
  277. package/dist/wiki/engine/errors/SP0151.md +20 -0
  278. package/dist/wiki/engine/errors/SP0152.md +20 -0
  279. package/dist/wiki/engine/errors/SP0154.md +20 -0
  280. package/dist/wiki/engine/errors/SP0157.md +20 -0
  281. package/dist/wiki/engine/errors/SP0158.md +20 -0
  282. package/dist/wiki/engine/errors/SP0159.md +20 -0
  283. package/dist/wiki/engine/errors/SP0160.md +20 -0
  284. package/dist/wiki/engine/errors/SP0161.md +20 -0
  285. package/dist/wiki/engine/errors/SP0162.md +20 -0
  286. package/dist/wiki/engine/errors/SP0163.md +20 -0
  287. package/dist/wiki/engine/errors/SP0164.md +20 -0
  288. package/dist/wiki/engine/errors/SP0165.md +20 -0
  289. package/dist/wiki/engine/errors/SP0166.md +20 -0
  290. package/dist/wiki/engine/errors/SP0167.md +20 -0
  291. package/dist/wiki/engine/errors/SP0169.md +20 -0
  292. package/dist/wiki/engine/errors/SP0175.md +20 -0
  293. package/dist/wiki/engine/errors/SP0176.md +20 -0
  294. package/dist/wiki/engine/errors/SP0177.md +20 -0
  295. package/dist/wiki/engine/errors/SP0178.md +20 -0
  296. package/dist/wiki/engine/errors/SP0179.md +20 -0
  297. package/dist/wiki/engine/errors/SP0180.md +20 -0
  298. package/dist/wiki/engine/errors/SP0181.md +20 -0
  299. package/dist/wiki/engine/errors/SP0182.md +20 -0
  300. package/dist/wiki/engine/errors/SP0183.md +20 -0
  301. package/dist/wiki/engine/errors/SP0184.md +20 -0
  302. package/dist/wiki/engine/errors/SP0185.md +20 -0
  303. package/dist/wiki/engine/errors/SP0186.md +20 -0
  304. package/dist/wiki/engine/errors/SP0187.md +20 -0
  305. package/dist/wiki/engine/errors/SP0188.md +20 -0
  306. package/dist/wiki/engine/errors/SP0189.md +20 -0
  307. package/dist/wiki/engine/errors/SP0190.md +20 -0
  308. package/dist/wiki/engine/errors/SP0191.md +20 -0
  309. package/dist/wiki/engine/errors/SP0192.md +20 -0
  310. package/dist/wiki/engine/errors/SP0193.md +20 -0
  311. package/dist/wiki/engine/errors/SP0194.md +20 -0
  312. package/dist/wiki/engine/errors/SP0195.md +20 -0
  313. package/dist/wiki/engine/errors/SP0196.md +20 -0
  314. package/dist/wiki/engine/errors/SP0197.md +20 -0
  315. package/dist/wiki/engine/errors/SP0198.md +20 -0
  316. package/dist/wiki/engine/errors/SP0199.md +20 -0
  317. package/dist/wiki/engine/errors/SP0200.md +20 -0
  318. package/dist/wiki/engine/errors/SP0202.md +20 -0
  319. package/dist/wiki/engine/errors/SP0203.md +20 -0
  320. package/dist/wiki/engine/errors/SP0204.md +20 -0
  321. package/dist/wiki/engine/errors/SP0205.md +20 -0
  322. package/dist/wiki/engine/errors/SP0206.md +20 -0
  323. package/dist/wiki/engine/errors/SP0207.md +20 -0
  324. package/dist/wiki/engine/errors/SP0208.md +20 -0
  325. package/dist/wiki/engine/errors/SP0210.md +20 -0
  326. package/dist/wiki/engine/errors/SP0211.md +20 -0
  327. package/dist/wiki/engine/errors/SP0212.md +20 -0
  328. package/dist/wiki/engine/errors/SP0213.md +20 -0
  329. package/dist/wiki/engine/errors/SP0214.md +20 -0
  330. package/dist/wiki/engine/errors/SP0215.md +20 -0
  331. package/dist/wiki/engine/errors/SP0216.md +20 -0
  332. package/dist/wiki/engine/errors/SP0219.md +20 -0
  333. package/dist/wiki/engine/errors/SP0220.md +20 -0
  334. package/dist/wiki/engine/errors/SP0221.md +20 -0
  335. package/dist/wiki/engine/errors/SP0225.md +20 -0
  336. package/dist/wiki/engine/errors/SP0228.md +20 -0
  337. package/dist/wiki/engine/errors/SP0229.md +20 -0
  338. package/dist/wiki/engine/errors/SP0230.md +20 -0
  339. package/dist/wiki/engine/errors/SP0231.md +20 -0
  340. package/dist/wiki/engine/errors/SP0232.md +20 -0
  341. package/dist/wiki/engine/errors/SP0233.md +20 -0
  342. package/dist/wiki/engine/errors/SP0234.md +20 -0
  343. package/dist/wiki/engine/errors/SP0235.md +20 -0
  344. package/dist/wiki/engine/errors/SP0236.md +20 -0
  345. package/dist/wiki/engine/errors/SP0237.md +20 -0
  346. package/dist/wiki/engine/errors/SP0238.md +20 -0
  347. package/dist/wiki/engine/errors/SP0239.md +20 -0
  348. package/dist/wiki/engine/errors/SP0240.md +20 -0
  349. package/dist/wiki/engine/errors/SP0241.md +20 -0
  350. package/dist/wiki/engine/errors/SP0242.md +20 -0
  351. package/dist/wiki/engine/errors/SP0243.md +20 -0
  352. package/dist/wiki/engine/errors/SP0244.md +20 -0
  353. package/dist/wiki/engine/errors/SP0245.md +20 -0
  354. package/dist/wiki/engine/errors/SP0247.md +20 -0
  355. package/dist/wiki/engine/errors/SP0249.md +20 -0
  356. package/dist/wiki/engine/errors/SP0250.md +20 -0
  357. package/dist/wiki/engine/errors/SP0251.md +20 -0
  358. package/dist/wiki/engine/errors/SP0252.md +20 -0
  359. package/dist/wiki/engine/errors/SP0253.md +20 -0
  360. package/dist/wiki/engine/errors/SP0254.md +20 -0
  361. package/dist/wiki/engine/errors/SP0255.md +20 -0
  362. package/dist/wiki/engine/errors/SP0256.md +20 -0
  363. package/dist/wiki/engine/errors/SP0257.md +20 -0
  364. package/dist/wiki/engine/errors/SP0258.md +20 -0
  365. package/dist/wiki/engine/errors/SP0259.md +20 -0
  366. package/dist/wiki/engine/errors/SP0260.md +20 -0
  367. package/dist/wiki/engine/errors/SP0270.md +20 -0
  368. package/dist/wiki/engine/errors/SP0271.md +20 -0
  369. package/dist/wiki/engine/errors/SP0272.md +20 -0
  370. package/dist/wiki/engine/errors/SP0273.md +20 -0
  371. package/dist/wiki/engine/errors/SP0274.md +20 -0
  372. package/dist/wiki/engine/errors/SP0275.md +20 -0
  373. package/dist/wiki/engine/errors/SP0276.md +20 -0
  374. package/dist/wiki/engine/errors/SP0277.md +20 -0
  375. package/dist/wiki/engine/errors/SP0278.md +20 -0
  376. package/dist/wiki/engine/errors/SP0279.md +20 -0
  377. package/dist/wiki/engine/errors/SP0280.md +20 -0
  378. package/dist/wiki/engine/errors/SP0281.md +20 -0
  379. package/dist/wiki/engine/errors/SP0282.md +20 -0
  380. package/dist/wiki/engine/errors/SP0283.md +20 -0
  381. package/dist/wiki/engine/errors/SP0284.md +20 -0
  382. package/dist/wiki/engine/errors/SP0285.md +20 -0
  383. package/dist/wiki/engine/errors/SP0286.md +20 -0
  384. package/dist/wiki/engine/errors/SP0287.md +20 -0
  385. package/dist/wiki/engine/errors/SP0288.md +20 -0
  386. package/dist/wiki/engine/errors/SP0289.md +20 -0
  387. package/dist/wiki/engine/errors/SP0290.md +20 -0
  388. package/dist/wiki/engine/errors/SP0291.md +20 -0
  389. package/dist/wiki/engine/errors/SP0292.md +20 -0
  390. package/dist/wiki/engine/errors/SP0293.md +20 -0
  391. package/dist/wiki/engine/errors/SP0294.md +20 -0
  392. package/dist/wiki/engine/errors/SP0295.md +20 -0
  393. package/dist/wiki/engine/errors/SP0296.md +20 -0
  394. package/dist/wiki/engine/errors/SP0297.md +20 -0
  395. package/dist/wiki/engine/errors/SP0298.md +20 -0
  396. package/dist/wiki/engine/errors/SP0299.md +20 -0
  397. package/dist/wiki/engine/errors/SP0300.md +20 -0
  398. package/dist/wiki/engine/errors/SP0301.md +20 -0
  399. package/dist/wiki/engine/errors/SP0302.md +20 -0
  400. package/dist/wiki/engine/errors/SP0303.md +20 -0
  401. package/dist/wiki/engine/errors/SP0304.md +20 -0
  402. package/dist/wiki/engine/errors/SP0305.md +20 -0
  403. package/dist/wiki/engine/errors/SP0306.md +20 -0
  404. package/dist/wiki/engine/errors/SP0307.md +20 -0
  405. package/dist/wiki/engine/errors/SP0308.md +20 -0
  406. package/dist/wiki/engine/errors/SP0309.md +20 -0
  407. package/dist/wiki/engine/errors/SP0310.md +20 -0
  408. package/dist/wiki/engine/errors/SP0311.md +20 -0
  409. package/dist/wiki/engine/errors/SP0312.md +20 -0
  410. package/dist/wiki/engine/errors/SP0313.md +20 -0
  411. package/dist/wiki/engine/errors/SP0314.md +20 -0
  412. package/dist/wiki/engine/errors/SP0315.md +20 -0
  413. package/dist/wiki/engine/errors/SP0316.md +20 -0
  414. package/dist/wiki/engine/errors/SP0317.md +20 -0
  415. package/dist/wiki/engine/errors/SP0318.md +20 -0
  416. package/dist/wiki/engine/errors/SP0319.md +20 -0
  417. package/dist/wiki/engine/errors/SP0320.md +20 -0
  418. package/dist/wiki/engine/errors/SP0321.md +20 -0
  419. package/dist/wiki/engine/errors/SP0322.md +20 -0
  420. package/dist/wiki/engine/errors/SP0323.md +20 -0
  421. package/dist/wiki/engine/errors/SP0324.md +20 -0
  422. package/dist/wiki/engine/errors/SP0325.md +20 -0
  423. package/dist/wiki/engine/errors/SP0326.md +20 -0
  424. package/dist/wiki/engine/errors/SP0327.md +20 -0
  425. package/dist/wiki/engine/errors/SP0328.md +20 -0
  426. package/dist/wiki/engine/errors/SP0329.md +20 -0
  427. package/dist/wiki/engine/errors/SP0330.md +20 -0
  428. package/dist/wiki/engine/errors/SP0331.md +20 -0
  429. package/dist/wiki/engine/errors/SP0332.md +20 -0
  430. package/dist/wiki/engine/errors/SP0333.md +20 -0
  431. package/dist/wiki/engine/errors/SP0334.md +20 -0
  432. package/dist/wiki/engine/errors/SP0335.md +20 -0
  433. package/dist/wiki/engine/errors/SP0336.md +20 -0
  434. package/dist/wiki/engine/errors/SP0337.md +20 -0
  435. package/dist/wiki/engine/errors/SP0338.md +20 -0
  436. package/dist/wiki/engine/errors/SP0339.md +20 -0
  437. package/dist/wiki/engine/errors/SP0340.md +20 -0
  438. package/dist/wiki/engine/errors/SP0341.md +20 -0
  439. package/dist/wiki/engine/errors/SP0342.md +20 -0
  440. package/dist/wiki/engine/errors/SP0343.md +20 -0
  441. package/dist/wiki/engine/errors/SP0344.md +20 -0
  442. package/dist/wiki/engine/errors/SP0346.md +20 -0
  443. package/dist/wiki/engine/errors/SP0347.md +20 -0
  444. package/dist/wiki/engine/errors/SP0348.md +20 -0
  445. package/dist/wiki/engine/errors/SP0349.md +20 -0
  446. package/dist/wiki/engine/errors/SP0350.md +20 -0
  447. package/dist/wiki/engine/errors/SP0351.md +20 -0
  448. package/dist/wiki/engine/errors/SP0352.md +20 -0
  449. package/dist/wiki/engine/errors/SP0353.md +20 -0
  450. package/dist/wiki/engine/errors/SP0354.md +20 -0
  451. package/dist/wiki/engine/errors/SP0355.md +20 -0
  452. package/dist/wiki/engine/errors/SP0356.md +20 -0
  453. package/dist/wiki/engine/errors/SP0357.md +20 -0
  454. package/dist/wiki/engine/errors/SP0358.md +20 -0
  455. package/dist/wiki/engine/errors/SP0359.md +20 -0
  456. package/dist/wiki/engine/errors/SP0360.md +20 -0
  457. package/dist/wiki/engine/errors/SP0361.md +20 -0
  458. package/dist/wiki/engine/errors/SP0362.md +20 -0
  459. package/dist/wiki/engine/errors/SP0363.md +20 -0
  460. package/dist/wiki/engine/errors/SP0364.md +20 -0
  461. package/dist/wiki/engine/errors/SP0365.md +20 -0
  462. package/dist/wiki/engine/errors/SP0366.md +20 -0
  463. package/dist/wiki/engine/errors/SP0367.md +20 -0
  464. package/dist/wiki/engine/errors/SP0368.md +20 -0
  465. package/dist/wiki/engine/errors/SP0369.md +20 -0
  466. package/dist/wiki/engine/errors/SP0370.md +20 -0
  467. package/dist/wiki/engine/errors/SP0371.md +20 -0
  468. package/dist/wiki/engine/errors/SP0372.md +20 -0
  469. package/dist/wiki/engine/errors/SP0373.md +20 -0
  470. package/dist/wiki/engine/errors/SP0374.md +20 -0
  471. package/dist/wiki/engine/errors/SP0375.md +20 -0
  472. package/dist/wiki/engine/errors/SP0376.md +20 -0
  473. package/dist/wiki/engine/errors/SP0377.md +20 -0
  474. package/dist/wiki/engine/errors/SP0378.md +20 -0
  475. package/dist/wiki/engine/errors/SP0379.md +20 -0
  476. package/dist/wiki/engine/errors/SP0380.md +20 -0
  477. package/dist/wiki/engine/errors/SP0381.md +20 -0
  478. package/dist/wiki/engine/errors/SP0382.md +20 -0
  479. package/dist/wiki/engine/errors/SP0383.md +20 -0
  480. package/dist/wiki/engine/errors/SP0384.md +20 -0
  481. package/dist/wiki/engine/errors/SP0385.md +20 -0
  482. package/dist/wiki/engine/errors/SP0386.md +20 -0
  483. package/dist/wiki/engine/errors/SP0387.md +21 -0
  484. package/dist/wiki/engine/errors/SP0388.md +20 -0
  485. package/dist/wiki/engine/errors/SP0389.md +20 -0
  486. package/dist/wiki/engine/errors/SP0390.md +20 -0
  487. package/dist/wiki/engine/errors/SP0391.md +20 -0
  488. package/dist/wiki/engine/errors/SP0392.md +20 -0
  489. package/dist/wiki/engine/errors/SP0393.md +20 -0
  490. package/dist/wiki/engine/errors/SP0394.md +20 -0
  491. package/dist/wiki/engine/errors/SP0395.md +20 -0
  492. package/dist/wiki/engine/errors/SP0396.md +20 -0
  493. package/dist/wiki/engine/errors/SP0397.md +20 -0
  494. package/dist/wiki/engine/errors/SP0398.md +20 -0
  495. package/dist/wiki/engine/errors/SP0399.md +20 -0
  496. package/dist/wiki/engine/errors/SP0400.md +20 -0
  497. package/dist/wiki/engine/errors/SP0401.md +20 -0
  498. package/dist/wiki/engine/errors/SP0402.md +20 -0
  499. package/dist/wiki/engine/errors/SP0403.md +20 -0
  500. package/dist/wiki/engine/errors/SP0404.md +20 -0
  501. package/dist/wiki/engine/errors/SP0405.md +20 -0
  502. package/dist/wiki/engine/errors/SP0406.md +20 -0
  503. package/dist/wiki/engine/errors/SP0407.md +20 -0
  504. package/dist/wiki/engine/errors/SP0408.md +20 -0
  505. package/dist/wiki/engine/errors/SP0409.md +20 -0
  506. package/dist/wiki/engine/errors/SP0410.md +20 -0
  507. package/dist/wiki/engine/errors/SP0411.md +20 -0
  508. package/dist/wiki/engine/errors/SP0412.md +20 -0
  509. package/dist/wiki/engine/errors/SP0413.md +20 -0
  510. package/dist/wiki/engine/errors/SP0414.md +20 -0
  511. package/dist/wiki/engine/errors/SP0415.md +20 -0
  512. package/dist/wiki/engine/errors/SP0416.md +20 -0
  513. package/dist/wiki/engine/errors/SP0417.md +20 -0
  514. package/dist/wiki/engine/errors/SP0418.md +20 -0
  515. package/dist/wiki/engine/errors/SP0419.md +20 -0
  516. package/dist/wiki/engine/errors/SP0420.md +20 -0
  517. package/dist/wiki/engine/errors/SP0421.md +20 -0
  518. package/dist/wiki/engine/errors/SP0422.md +20 -0
  519. package/dist/wiki/engine/errors/SP0423.md +20 -0
  520. package/dist/wiki/engine/errors/SP0427.md +20 -0
  521. package/dist/wiki/engine/errors/SP0428.md +20 -0
  522. package/dist/wiki/engine/errors/SP0429.md +20 -0
  523. package/dist/wiki/engine/errors/SP0430.md +20 -0
  524. package/dist/wiki/engine/errors/SP0431.md +20 -0
  525. package/dist/wiki/engine/errors/SP0432.md +20 -0
  526. package/dist/wiki/engine/errors/SP0433.md +20 -0
  527. package/dist/wiki/engine/errors/SP0434.md +20 -0
  528. package/dist/wiki/engine/errors/SP0435.md +20 -0
  529. package/dist/wiki/engine/errors/SP0436.md +20 -0
  530. package/dist/wiki/engine/errors/SP0437.md +20 -0
  531. package/dist/wiki/engine/errors/SP0438.md +20 -0
  532. package/dist/wiki/engine/errors/SP0439.md +20 -0
  533. package/dist/wiki/engine/errors/SP0440.md +20 -0
  534. package/dist/wiki/engine/errors/SP0442.md +20 -0
  535. package/dist/wiki/engine/errors/SP0443.md +20 -0
  536. package/dist/wiki/engine/errors/SP0444.md +20 -0
  537. package/dist/wiki/engine/errors/SP0445.md +20 -0
  538. package/dist/wiki/engine/errors/SP0446.md +20 -0
  539. package/dist/wiki/engine/errors/SP0447.md +20 -0
  540. package/dist/wiki/engine/errors/SP0448.md +20 -0
  541. package/dist/wiki/engine/errors/SP0449.md +20 -0
  542. package/dist/wiki/engine/errors/SP0450.md +20 -0
  543. package/dist/wiki/engine/errors/SP0451.md +20 -0
  544. package/dist/wiki/engine/errors/SP0452.md +20 -0
  545. package/dist/wiki/engine/errors/SP0453.md +20 -0
  546. package/dist/wiki/engine/errors/SP0454.md +20 -0
  547. package/dist/wiki/engine/errors/SP0455.md +20 -0
  548. package/dist/wiki/engine/errors/SP0456.md +20 -0
  549. package/dist/wiki/engine/errors/SP0457.md +20 -0
  550. package/dist/wiki/engine/errors/SP0458.md +20 -0
  551. package/dist/wiki/engine/errors/SP0459.md +20 -0
  552. package/dist/wiki/engine/errors/SP0460.md +20 -0
  553. package/dist/wiki/engine/errors/SP0461.md +20 -0
  554. package/dist/wiki/engine/errors/SP0462.md +20 -0
  555. package/dist/wiki/engine/errors/SP0463.md +20 -0
  556. package/dist/wiki/engine/errors/SP0464.md +20 -0
  557. package/dist/wiki/engine/errors/SP0465.md +20 -0
  558. package/dist/wiki/engine/errors/SP0466.md +20 -0
  559. package/dist/wiki/engine/errors/SP0467.md +20 -0
  560. package/dist/wiki/engine/errors/SP0468.md +20 -0
  561. package/dist/wiki/engine/errors/SP0469.md +20 -0
  562. package/dist/wiki/engine/errors/SP0470.md +20 -0
  563. package/dist/wiki/engine/errors/SP0471.md +20 -0
  564. package/dist/wiki/engine/errors/SP0472.md +20 -0
  565. package/dist/wiki/engine/errors/SP0473.md +20 -0
  566. package/dist/wiki/engine/errors/SP0474.md +20 -0
  567. package/dist/wiki/engine/errors/SP0475.md +20 -0
  568. package/dist/wiki/engine/errors/SP0476.md +20 -0
  569. package/dist/wiki/engine/errors/SP0477.md +20 -0
  570. package/dist/wiki/engine/errors/SP0478.md +20 -0
  571. package/dist/wiki/engine/errors/SP0479.md +20 -0
  572. package/dist/wiki/engine/errors/SP0480.md +20 -0
  573. package/dist/wiki/engine/errors/SP0481.md +20 -0
  574. package/dist/wiki/engine/errors/SP0482.md +20 -0
  575. package/dist/wiki/engine/errors/SP0483.md +20 -0
  576. package/dist/wiki/engine/errors/SP0484.md +20 -0
  577. package/dist/wiki/engine/errors/SP0497.md +20 -0
  578. package/dist/wiki/engine/errors/SP0498.md +20 -0
  579. package/dist/wiki/engine/errors/SP0500.md +20 -0
  580. package/dist/wiki/engine/errors/SP0501.md +20 -0
  581. package/dist/wiki/engine/errors/SP0502.md +20 -0
  582. package/dist/wiki/engine/errors/SP0503.md +20 -0
  583. package/dist/wiki/engine/errors/SP0504.md +20 -0
  584. package/dist/wiki/engine/errors/SP0505.md +20 -0
  585. package/dist/wiki/engine/errors/SP0506.md +20 -0
  586. package/dist/wiki/engine/errors/SP0507.md +20 -0
  587. package/dist/wiki/engine/errors/SP0508.md +20 -0
  588. package/dist/wiki/engine/errors/SP0509.md +20 -0
  589. package/dist/wiki/engine/errors/SP0510.md +20 -0
  590. package/dist/wiki/engine/errors/SP0511.md +20 -0
  591. package/dist/wiki/engine/errors/SP0512.md +20 -0
  592. package/dist/wiki/engine/errors/SP0513.md +20 -0
  593. package/dist/wiki/engine/errors/SP0514.md +20 -0
  594. package/dist/wiki/engine/errors/SP0515.md +20 -0
  595. package/dist/wiki/engine/errors/SP0516.md +20 -0
  596. package/dist/wiki/engine/errors/SP0517.md +20 -0
  597. package/dist/wiki/engine/errors/SP0518.md +20 -0
  598. package/dist/wiki/engine/errors/SP0519.md +20 -0
  599. package/dist/wiki/engine/errors/SP0520.md +20 -0
  600. package/dist/wiki/engine/errors/SP0521.md +20 -0
  601. package/dist/wiki/engine/errors/SP0522.md +20 -0
  602. package/dist/wiki/engine/errors/SP0523.md +20 -0
  603. package/dist/wiki/engine/errors/SP0524.md +20 -0
  604. package/dist/wiki/engine/errors/SP0525.md +20 -0
  605. package/dist/wiki/engine/errors/SP0526.md +20 -0
  606. package/dist/wiki/engine/errors/SP0527.md +20 -0
  607. package/dist/wiki/engine/errors/SP0528.md +20 -0
  608. package/dist/wiki/engine/errors/SP0529.md +20 -0
  609. package/dist/wiki/engine/errors/SP0530.md +20 -0
  610. package/dist/wiki/engine/errors/SP0531.md +20 -0
  611. package/dist/wiki/engine/errors/SP0532.md +20 -0
  612. package/dist/wiki/engine/errors/SP0533.md +20 -0
  613. package/dist/wiki/engine/errors/SP0534.md +20 -0
  614. package/dist/wiki/engine/errors/SP0535.md +20 -0
  615. package/dist/wiki/engine/errors/SP0536.md +20 -0
  616. package/dist/wiki/engine/errors/SP0537.md +20 -0
  617. package/dist/wiki/engine/errors/SP0538.md +20 -0
  618. package/dist/wiki/engine/errors/SP0539.md +20 -0
  619. package/dist/wiki/engine/errors/SP0540.md +20 -0
  620. package/dist/wiki/engine/errors/SP0541.md +20 -0
  621. package/dist/wiki/engine/errors/SP0542.md +20 -0
  622. package/dist/wiki/engine/errors/SP0543.md +20 -0
  623. package/dist/wiki/engine/errors/SP0545.md +20 -0
  624. package/dist/wiki/engine/errors/SP0546.md +20 -0
  625. package/dist/wiki/engine/errors/SP0547.md +20 -0
  626. package/dist/wiki/engine/errors/SP0548.md +20 -0
  627. package/dist/wiki/engine/errors/SP0549.md +20 -0
  628. package/dist/wiki/engine/errors/SP0550.md +20 -0
  629. package/dist/wiki/engine/errors/SP0551.md +20 -0
  630. package/dist/wiki/engine/errors/SP0552.md +20 -0
  631. package/dist/wiki/engine/errors/SP0553.md +20 -0
  632. package/dist/wiki/engine/errors/SP0554.md +20 -0
  633. package/dist/wiki/engine/errors/SP0555.md +20 -0
  634. package/dist/wiki/engine/errors/SP0556.md +20 -0
  635. package/dist/wiki/engine/errors/SP0557.md +20 -0
  636. package/dist/wiki/engine/errors/SP0558.md +20 -0
  637. package/dist/wiki/engine/errors/SP0559.md +20 -0
  638. package/dist/wiki/engine/errors/SP0560.md +20 -0
  639. package/dist/wiki/engine/errors/SP0561.md +20 -0
  640. package/dist/wiki/engine/errors/SP0562.md +20 -0
  641. package/dist/wiki/engine/errors/SP0563.md +20 -0
  642. package/dist/wiki/engine/errors/SP0564.md +20 -0
  643. package/dist/wiki/engine/errors/SP0565.md +20 -0
  644. package/dist/wiki/engine/errors/SP0566.md +20 -0
  645. package/dist/wiki/engine/errors/SP0567.md +20 -0
  646. package/dist/wiki/engine/errors/SP0568.md +20 -0
  647. package/dist/wiki/engine/errors/SP0569.md +20 -0
  648. package/dist/wiki/engine/errors/SP0570.md +20 -0
  649. package/dist/wiki/engine/errors/index.md +504 -0
  650. package/dist/wiki/engine/graphics/crt-material.md +64 -0
  651. package/dist/wiki/engine/graphics/energy-orb-material.md +52 -0
  652. package/dist/wiki/engine/graphics/instanced-model.md +89 -0
  653. package/dist/wiki/engine/graphics/looks.md +196 -0
  654. package/dist/wiki/engine/graphics/particles.md +185 -0
  655. package/dist/wiki/engine/graphics/portal-material.md +49 -0
  656. package/dist/wiki/engine/graphics/post-processing.md +130 -0
  657. package/dist/wiki/engine/graphics/renderer.md +103 -0
  658. package/dist/wiki/engine/graphics/shader.md +331 -0
  659. package/dist/wiki/engine/graphics/skinned-batch.md +115 -0
  660. package/dist/wiki/engine/graphics/track-scatter.md +124 -0
  661. package/dist/wiki/engine/graphics/track-surface.md +107 -0
  662. package/dist/wiki/engine/graphics/water-material.md +60 -0
  663. package/dist/wiki/engine/graphics/webgpu.md +87 -0
  664. package/dist/wiki/engine/structure/game.md +301 -0
  665. package/dist/wiki/engine/structure/levels.md +239 -0
  666. package/dist/wiki/engine/structure/plugins.md +423 -0
  667. package/dist/wiki/engine/structure/round.md +229 -0
  668. package/dist/wiki/engine/structure/saves.md +251 -0
  669. package/dist/wiki/engine/structure/scene.md +69 -0
  670. package/dist/wiki/engine/structure/states.md +202 -0
  671. package/dist/wiki/engine/structure/systems.md +242 -0
  672. package/dist/wiki/engine/structure/track-level.md +73 -0
  673. package/dist/wiki/engine/structure/world.md +371 -0
  674. package/dist/wiki/engine/testing/agent-state.md +131 -0
  675. package/dist/wiki/engine/testing/dev-server.md +101 -0
  676. package/dist/wiki/engine/testing/devtools-wiki.md +80 -0
  677. package/dist/wiki/engine/testing/devtools.md +143 -0
  678. package/dist/wiki/engine/testing/directing.md +125 -0
  679. package/dist/wiki/engine/testing/director.md +285 -0
  680. package/dist/wiki/engine/testing/editing.md +71 -0
  681. package/dist/wiki/engine/testing/errors.md +146 -0
  682. package/dist/wiki/engine/testing/frame.md +175 -0
  683. package/dist/wiki/engine/testing/headless.md +133 -0
  684. package/dist/wiki/engine/testing/hitches.md +140 -0
  685. package/dist/wiki/engine/testing/joins.md +129 -0
  686. package/dist/wiki/engine/testing/measuring.md +97 -0
  687. package/dist/wiki/engine/testing/performance.md +48 -0
  688. package/dist/wiki/engine/testing/processes.md +87 -0
  689. package/dist/wiki/engine/testing/replay-storage.md +156 -0
  690. package/dist/wiki/engine/testing/replay.md +230 -0
  691. package/dist/wiki/engine/testing/runs.md +162 -0
  692. package/dist/wiki/engine/testing/which-tool.md +155 -0
  693. package/dist/wiki/engine/ui/action-bar.md +121 -0
  694. package/dist/wiki/engine/ui/bar.md +54 -0
  695. package/dist/wiki/engine/ui/billboard.md +64 -0
  696. package/dist/wiki/engine/ui/button.md +69 -0
  697. package/dist/wiki/engine/ui/controls.md +131 -0
  698. package/dist/wiki/engine/ui/counter.md +40 -0
  699. package/dist/wiki/engine/ui/devtools-panel.md +69 -0
  700. package/dist/wiki/engine/ui/drag-and-drop.md +134 -0
  701. package/dist/wiki/engine/ui/floating-text.md +129 -0
  702. package/dist/wiki/engine/ui/graphics-quality.md +254 -0
  703. package/dist/wiki/engine/ui/heading.md +43 -0
  704. package/dist/wiki/engine/ui/hud.md +100 -0
  705. package/dist/wiki/engine/ui/icon.md +34 -0
  706. package/dist/wiki/engine/ui/image.md +38 -0
  707. package/dist/wiki/engine/ui/index.md +59 -0
  708. package/dist/wiki/engine/ui/joystick.md +32 -0
  709. package/dist/wiki/engine/ui/modal.md +95 -0
  710. package/dist/wiki/engine/ui/panel.md +100 -0
  711. package/dist/wiki/engine/ui/settings.md +303 -0
  712. package/dist/wiki/engine/ui/tap.md +33 -0
  713. package/dist/wiki/engine/ui/text.md +56 -0
  714. package/dist/wiki/engine/ui/theme.md +119 -0
  715. package/dist/wiki/engine/ui/window.md +68 -0
  716. package/dist/wmIDrLkF.js +1 -0
  717. package/dist/yhuZzG90.js +1 -0
  718. package/dist/z3YXvfLT.js +1 -0
  719. package/dist-browser/@pixiv/three-vrm/nodes.js +1 -0
  720. package/dist-browser/@pixiv/three-vrm.js +1 -0
  721. package/dist-browser/@react-three/drei/exports/-accumulative-shadows.js +1 -0
  722. package/dist-browser/@react-three/drei/exports/-adaptive-dpr.js +1 -0
  723. package/dist-browser/@react-three/drei/exports/-adaptive-events.js +1 -0
  724. package/dist-browser/@react-three/drei/exports/-arcball-controls.js +1 -0
  725. package/dist-browser/@react-three/drei/exports/-ascii-renderer.js +1 -0
  726. package/dist-browser/@react-three/drei/exports/-b-b-anchor.js +1 -0
  727. package/dist-browser/@react-three/drei/exports/-backdrop.js +1 -0
  728. package/dist-browser/@react-three/drei/exports/-bake-shadows.js +1 -0
  729. package/dist-browser/@react-three/drei/exports/-billboard.js +1 -0
  730. package/dist-browser/@react-three/drei/exports/-bounds.js +1 -0
  731. package/dist-browser/@react-three/drei/exports/-box.js +1 -0
  732. package/dist-browser/@react-three/drei/exports/-bvh.js +1 -0
  733. package/dist-browser/@react-three/drei/exports/-camera-controls-impl.js +1 -0
  734. package/dist-browser/@react-three/drei/exports/-camera-controls.js +1 -0
  735. package/dist-browser/@react-three/drei/exports/-camera-shake.js +1 -0
  736. package/dist-browser/@react-three/drei/exports/-capsule.js +1 -0
  737. package/dist-browser/@react-three/drei/exports/-catmull-rom-line.js +1 -0
  738. package/dist-browser/@react-three/drei/exports/-caustics.js +1 -0
  739. package/dist-browser/@react-three/drei/exports/-center.js +1 -0
  740. package/dist-browser/@react-three/drei/exports/-circle.js +1 -0
  741. package/dist-browser/@react-three/drei/exports/-clone.js +1 -0
  742. package/dist-browser/@react-three/drei/exports/-cloud-instance.js +1 -0
  743. package/dist-browser/@react-three/drei/exports/-cloud.js +1 -0
  744. package/dist-browser/@react-three/drei/exports/-clouds.js +1 -0
  745. package/dist-browser/@react-three/drei/exports/-computed-attribute.js +1 -0
  746. package/dist-browser/@react-three/drei/exports/-cone.js +1 -0
  747. package/dist-browser/@react-three/drei/exports/-contact-shadows.js +1 -0
  748. package/dist-browser/@react-three/drei/exports/-cube-camera.js +1 -0
  749. package/dist-browser/@react-three/drei/exports/-cube-texture.js +1 -0
  750. package/dist-browser/@react-three/drei/exports/-cubic-bezier-line.js +1 -0
  751. package/dist-browser/@react-three/drei/exports/-curve-modifier.js +1 -0
  752. package/dist-browser/@react-three/drei/exports/-cycle-raycast.js +1 -0
  753. package/dist-browser/@react-three/drei/exports/-cylinder.js +1 -0
  754. package/dist-browser/@react-three/drei/exports/-decal.js +1 -0
  755. package/dist-browser/@react-three/drei/exports/-detailed.js +1 -0
  756. package/dist-browser/@react-three/drei/exports/-detect-g-p-u.js +1 -0
  757. package/dist-browser/@react-three/drei/exports/-device-orientation-controls.js +1 -0
  758. package/dist-browser/@react-three/drei/exports/-dodecahedron.js +1 -0
  759. package/dist-browser/@react-three/drei/exports/-drag-controls.js +1 -0
  760. package/dist-browser/@react-three/drei/exports/-edges.js +1 -0
  761. package/dist-browser/@react-three/drei/exports/-effects.js +1 -0
  762. package/dist-browser/@react-three/drei/exports/-environment-cube.js +1 -0
  763. package/dist-browser/@react-three/drei/exports/-environment-map.js +1 -0
  764. package/dist-browser/@react-three/drei/exports/-environment-portal.js +1 -0
  765. package/dist-browser/@react-three/drei/exports/-environment.js +1 -0
  766. package/dist-browser/@react-three/drei/exports/-example.js +1 -0
  767. package/dist-browser/@react-three/drei/exports/-extrude.js +1 -0
  768. package/dist-browser/@react-three/drei/exports/-face-controls.js +1 -0
  769. package/dist-browser/@react-three/drei/exports/-face-landmarker-defaults.js +1 -0
  770. package/dist-browser/@react-three/drei/exports/-face-landmarker.js +1 -0
  771. package/dist-browser/@react-three/drei/exports/-facemesh-datas.js +1 -0
  772. package/dist-browser/@react-three/drei/exports/-facemesh-eye-defaults.js +1 -0
  773. package/dist-browser/@react-three/drei/exports/-facemesh-eye.js +1 -0
  774. package/dist-browser/@react-three/drei/exports/-facemesh.js +1 -0
  775. package/dist-browser/@react-three/drei/exports/-fbo.js +1 -0
  776. package/dist-browser/@react-three/drei/exports/-fbx.js +1 -0
  777. package/dist-browser/@react-three/drei/exports/-first-person-controls.js +1 -0
  778. package/dist-browser/@react-three/drei/exports/-fisheye.js +1 -0
  779. package/dist-browser/@react-three/drei/exports/-float.js +1 -0
  780. package/dist-browser/@react-three/drei/exports/-fly-controls.js +1 -0
  781. package/dist-browser/@react-three/drei/exports/-gizmo-helper.js +1 -0
  782. package/dist-browser/@react-three/drei/exports/-gizmo-viewcube.js +1 -0
  783. package/dist-browser/@react-three/drei/exports/-gizmo-viewport.js +1 -0
  784. package/dist-browser/@react-three/drei/exports/-gltf.js +1 -0
  785. package/dist-browser/@react-three/drei/exports/-gradient-texture.js +1 -0
  786. package/dist-browser/@react-three/drei/exports/-gradient-type.js +1 -0
  787. package/dist-browser/@react-three/drei/exports/-grid.js +1 -0
  788. package/dist-browser/@react-three/drei/exports/-helper.js +1 -0
  789. package/dist-browser/@react-three/drei/exports/-html.js +1 -0
  790. package/dist-browser/@react-three/drei/exports/-hud.js +1 -0
  791. package/dist-browser/@react-three/drei/exports/-icosahedron.js +1 -0
  792. package/dist-browser/@react-three/drei/exports/-image.js +1 -0
  793. package/dist-browser/@react-three/drei/exports/-instance.js +1 -0
  794. package/dist-browser/@react-three/drei/exports/-instanced-attribute.js +1 -0
  795. package/dist-browser/@react-three/drei/exports/-instances.js +1 -0
  796. package/dist-browser/@react-three/drei/exports/-is-object.js +1 -0
  797. package/dist-browser/@react-three/drei/exports/-keyboard-controls.js +1 -0
  798. package/dist-browser/@react-three/drei/exports/-ktx2.js +1 -0
  799. package/dist-browser/@react-three/drei/exports/-lathe.js +1 -0
  800. package/dist-browser/@react-three/drei/exports/-lightformer.js +1 -0
  801. package/dist-browser/@react-three/drei/exports/-line.js +1 -0
  802. package/dist-browser/@react-three/drei/exports/-loader.js +1 -0
  803. package/dist-browser/@react-three/drei/exports/-map-controls.js +1 -0
  804. package/dist-browser/@react-three/drei/exports/-marching-cube.js +1 -0
  805. package/dist-browser/@react-three/drei/exports/-marching-cubes.js +1 -0
  806. package/dist-browser/@react-three/drei/exports/-marching-plane.js +1 -0
  807. package/dist-browser/@react-three/drei/exports/-mask.js +1 -0
  808. package/dist-browser/@react-three/drei/exports/-matcap-texture.js +1 -0
  809. package/dist-browser/@react-three/drei/exports/-merged.js +1 -0
  810. package/dist-browser/@react-three/drei/exports/-mesh-discard-material.js +1 -0
  811. package/dist-browser/@react-three/drei/exports/-mesh-distort-material.js +1 -0
  812. package/dist-browser/@react-three/drei/exports/-mesh-portal-material.js +1 -0
  813. package/dist-browser/@react-three/drei/exports/-mesh-reflector-material.js +1 -0
  814. package/dist-browser/@react-three/drei/exports/-mesh-refraction-material.js +1 -0
  815. package/dist-browser/@react-three/drei/exports/-mesh-transmission-material.js +1 -0
  816. package/dist-browser/@react-three/drei/exports/-mesh-wobble-material.js +1 -0
  817. package/dist-browser/@react-three/drei/exports/-motion-path-controls.js +1 -0
  818. package/dist-browser/@react-three/drei/exports/-multi-material.js +1 -0
  819. package/dist-browser/@react-three/drei/exports/-normal-texture.js +1 -0
  820. package/dist-browser/@react-three/drei/exports/-octahedron.js +1 -0
  821. package/dist-browser/@react-three/drei/exports/-orbit-controls.js +1 -0
  822. package/dist-browser/@react-three/drei/exports/-orthographic-camera.js +1 -0
  823. package/dist-browser/@react-three/drei/exports/-outlines.js +1 -0
  824. package/dist-browser/@react-three/drei/exports/-performance-monitor.js +1 -0
  825. package/dist-browser/@react-three/drei/exports/-perspective-camera.js +1 -0
  826. package/dist-browser/@react-three/drei/exports/-pivot-controls.js +1 -0
  827. package/dist-browser/@react-three/drei/exports/-plane.js +1 -0
  828. package/dist-browser/@react-three/drei/exports/-point-material-impl.js +1 -0
  829. package/dist-browser/@react-three/drei/exports/-point-material.js +1 -0
  830. package/dist-browser/@react-three/drei/exports/-point.js +1 -0
  831. package/dist-browser/@react-three/drei/exports/-pointer-lock-controls.js +1 -0
  832. package/dist-browser/@react-three/drei/exports/-points-buffer.js +1 -0
  833. package/dist-browser/@react-three/drei/exports/-points.js +1 -0
  834. package/dist-browser/@react-three/drei/exports/-polyhedron.js +1 -0
  835. package/dist-browser/@react-three/drei/exports/-position-mesh.js +1 -0
  836. package/dist-browser/@react-three/drei/exports/-position-point.js +1 -0
  837. package/dist-browser/@react-three/drei/exports/-positional-audio.js +1 -0
  838. package/dist-browser/@react-three/drei/exports/-preload.js +1 -0
  839. package/dist-browser/@react-three/drei/exports/-presentation-controls.js +1 -0
  840. package/dist-browser/@react-three/drei/exports/-progress.js +1 -0
  841. package/dist-browser/@react-three/drei/exports/-quadratic-bezier-line.js +1 -0
  842. package/dist-browser/@react-three/drei/exports/-randomized-light.js +1 -0
  843. package/dist-browser/@react-three/drei/exports/-render-cube-texture.js +1 -0
  844. package/dist-browser/@react-three/drei/exports/-render-texture.js +1 -0
  845. package/dist-browser/@react-three/drei/exports/-resize.js +1 -0
  846. package/dist-browser/@react-three/drei/exports/-ring.js +1 -0
  847. package/dist-browser/@react-three/drei/exports/-rounded-box-geometry.js +1 -0
  848. package/dist-browser/@react-three/drei/exports/-rounded-box.js +1 -0
  849. package/dist-browser/@react-three/drei/exports/-sampler.js +1 -0
  850. package/dist-browser/@react-three/drei/exports/-screen-quad.js +1 -0
  851. package/dist-browser/@react-three/drei/exports/-screen-sizer.js +1 -0
  852. package/dist-browser/@react-three/drei/exports/-screen-space.js +1 -0
  853. package/dist-browser/@react-three/drei/exports/-screen-video-texture.js +1 -0
  854. package/dist-browser/@react-three/drei/exports/-scroll-controls.js +1 -0
  855. package/dist-browser/@react-three/drei/exports/-scroll.js +1 -0
  856. package/dist-browser/@react-three/drei/exports/-segment-object.js +1 -0
  857. package/dist-browser/@react-three/drei/exports/-segment.js +1 -0
  858. package/dist-browser/@react-three/drei/exports/-segments.js +1 -0
  859. package/dist-browser/@react-three/drei/exports/-select.js +1 -0
  860. package/dist-browser/@react-three/drei/exports/-shadow-alpha.js +1 -0
  861. package/dist-browser/@react-three/drei/exports/-shadow.js +1 -0
  862. package/dist-browser/@react-three/drei/exports/-shape.js +1 -0
  863. package/dist-browser/@react-three/drei/exports/-sky.js +1 -0
  864. package/dist-browser/@react-three/drei/exports/-soft-shadows.js +1 -0
  865. package/dist-browser/@react-three/drei/exports/-sparkles.js +1 -0
  866. package/dist-browser/@react-three/drei/exports/-sphere.js +1 -0
  867. package/dist-browser/@react-three/drei/exports/-splat.js +1 -0
  868. package/dist-browser/@react-three/drei/exports/-spot-light-shadow.js +1 -0
  869. package/dist-browser/@react-three/drei/exports/-spot-light.js +1 -0
  870. package/dist-browser/@react-three/drei/exports/-sprite-animator.js +1 -0
  871. package/dist-browser/@react-three/drei/exports/-stage.js +1 -0
  872. package/dist-browser/@react-three/drei/exports/-stars.js +1 -0
  873. package/dist-browser/@react-three/drei/exports/-stats-gl.js +1 -0
  874. package/dist-browser/@react-three/drei/exports/-stats.js +1 -0
  875. package/dist-browser/@react-three/drei/exports/-svg.js +1 -0
  876. package/dist-browser/@react-three/drei/exports/-tetrahedron.js +1 -0
  877. package/dist-browser/@react-three/drei/exports/-text.js +1 -0
  878. package/dist-browser/@react-three/drei/exports/-text3-d.js +1 -0
  879. package/dist-browser/@react-three/drei/exports/-texture.js +1 -0
  880. package/dist-browser/@react-three/drei/exports/-torus-knot.js +1 -0
  881. package/dist-browser/@react-three/drei/exports/-torus.js +1 -0
  882. package/dist-browser/@react-three/drei/exports/-trackball-controls.js +1 -0
  883. package/dist-browser/@react-three/drei/exports/-trail-texture.js +1 -0
  884. package/dist-browser/@react-three/drei/exports/-trail.js +1 -0
  885. package/dist-browser/@react-three/drei/exports/-transform-controls.js +1 -0
  886. package/dist-browser/@react-three/drei/exports/-tube.js +1 -0
  887. package/dist-browser/@react-three/drei/exports/-video-texture.js +1 -0
  888. package/dist-browser/@react-three/drei/exports/-view.js +1 -0
  889. package/dist-browser/@react-three/drei/exports/-webcam-video-texture.js +1 -0
  890. package/dist-browser/@react-three/drei/exports/-wireframe.js +1 -0
  891. package/dist-browser/@react-three/drei/exports/accumulative-context.js +1 -0
  892. package/dist-browser/@react-three/drei/exports/calc-pos-from-angles.js +1 -0
  893. package/dist-browser/@react-three/drei/exports/calculate-scale-factor.js +1 -0
  894. package/dist-browser/@react-three/drei/exports/check-if-frame-is-empty.js +1 -0
  895. package/dist-browser/@react-three/drei/exports/create-instances.js +1 -0
  896. package/dist-browser/@react-three/drei/exports/get-first-frame.js +1 -0
  897. package/dist-browser/@react-three/drei/exports/is-web-g-l2-available.js +1 -0
  898. package/dist-browser/@react-three/drei/exports/mesh-bounds.js +1 -0
  899. package/dist-browser/@react-three/drei/exports/shader-material.js +1 -0
  900. package/dist-browser/@react-three/drei/exports/use-animations.js +1 -0
  901. package/dist-browser/@react-three/drei/exports/use-aspect.js +1 -0
  902. package/dist-browser/@react-three/drei/exports/use-b-v-h.js +1 -0
  903. package/dist-browser/@react-three/drei/exports/use-bounds.js +1 -0
  904. package/dist-browser/@react-three/drei/exports/use-box-projected-env.js +1 -0
  905. package/dist-browser/@react-three/drei/exports/use-camera.js +1 -0
  906. package/dist-browser/@react-three/drei/exports/use-context-bridge.js +1 -0
  907. package/dist-browser/@react-three/drei/exports/use-cube-camera.js +1 -0
  908. package/dist-browser/@react-three/drei/exports/use-cube-texture.js +1 -0
  909. package/dist-browser/@react-three/drei/exports/use-cursor.js +1 -0
  910. package/dist-browser/@react-three/drei/exports/use-depth-buffer.js +1 -0
  911. package/dist-browser/@react-three/drei/exports/use-detect-g-p-u.js +1 -0
  912. package/dist-browser/@react-three/drei/exports/use-environment.js +1 -0
  913. package/dist-browser/@react-three/drei/exports/use-f-b-o.js +1 -0
  914. package/dist-browser/@react-three/drei/exports/use-f-b-x.js +1 -0
  915. package/dist-browser/@react-three/drei/exports/use-face-controls.js +1 -0
  916. package/dist-browser/@react-three/drei/exports/use-face-landmarker.js +1 -0
  917. package/dist-browser/@react-three/drei/exports/use-font.js +1 -0
  918. package/dist-browser/@react-three/drei/exports/use-g-l-t-f.js +1 -0
  919. package/dist-browser/@react-three/drei/exports/use-gizmo-context.js +1 -0
  920. package/dist-browser/@react-three/drei/exports/use-helper.js +1 -0
  921. package/dist-browser/@react-three/drei/exports/use-intersect.js +1 -0
  922. package/dist-browser/@react-three/drei/exports/use-k-t-x2.js +1 -0
  923. package/dist-browser/@react-three/drei/exports/use-keyboard-controls.js +1 -0
  924. package/dist-browser/@react-three/drei/exports/use-mask.js +1 -0
  925. package/dist-browser/@react-three/drei/exports/use-matcap-texture.js +1 -0
  926. package/dist-browser/@react-three/drei/exports/use-motion.js +1 -0
  927. package/dist-browser/@react-three/drei/exports/use-normal-texture.js +1 -0
  928. package/dist-browser/@react-three/drei/exports/use-performance-monitor.js +1 -0
  929. package/dist-browser/@react-three/drei/exports/use-progress.js +1 -0
  930. package/dist-browser/@react-three/drei/exports/use-scroll.js +1 -0
  931. package/dist-browser/@react-three/drei/exports/use-select.js +1 -0
  932. package/dist-browser/@react-three/drei/exports/use-sprite-animator.js +1 -0
  933. package/dist-browser/@react-three/drei/exports/use-sprite-loader.js +1 -0
  934. package/dist-browser/@react-three/drei/exports/use-surface-sampler.js +1 -0
  935. package/dist-browser/@react-three/drei/exports/use-texture.js +1 -0
  936. package/dist-browser/@react-three/drei/exports/use-trail-texture.js +1 -0
  937. package/dist-browser/@react-three/drei/exports/use-trail.js +1 -0
  938. package/dist-browser/@react-three/drei/exports/use-video-texture.js +1 -0
  939. package/dist-browser/@react-three/drei.js +1 -0
  940. package/dist-browser/@react-three/fiber.js +1 -0
  941. package/dist-browser/@react-three/postprocessing.js +1 -0
  942. package/dist-browser/@spawnite/engine/abilities.js +1 -0
  943. package/dist-browser/@spawnite/engine/core.js +1 -0
  944. package/dist-browser/@spawnite/engine/dragAndDrop.js +1 -0
  945. package/dist-browser/@spawnite/engine/inventory.js +1 -0
  946. package/dist-browser/@spawnite/engine/looks/dusk.js +1 -0
  947. package/dist-browser/@spawnite/engine/looks/morning.js +1 -0
  948. package/dist-browser/@spawnite/engine/looks/night.js +1 -0
  949. package/dist-browser/@spawnite/engine/looks/noon.js +1 -0
  950. package/dist-browser/@spawnite/engine/looks/overcast.js +1 -0
  951. package/dist-browser/@spawnite/engine/npcs.js +1 -0
  952. package/dist-browser/@spawnite/engine/rounds.js +1 -0
  953. package/dist-browser/@spawnite/engine/three.js +1 -0
  954. package/dist-browser/@spawnite/engine/tracks.js +1 -0
  955. package/dist-browser/@spawnite/engine/weapons.js +1 -0
  956. package/dist-browser/@spawnite/engine.js +376 -0
  957. package/dist-browser/@spawnite/schema/exports/-agent-state.js +1 -0
  958. package/dist-browser/@spawnite/schema/exports/-app-message-type.js +1 -0
  959. package/dist-browser/@spawnite/schema/exports/-channel-handshake.js +1 -0
  960. package/dist-browser/@spawnite/schema/exports/-clip-clock.js +1 -0
  961. package/dist-browser/@spawnite/schema/exports/-clip-record-action.js +1 -0
  962. package/dist-browser/@spawnite/schema/exports/-clip-shape.js +1 -0
  963. package/dist-browser/@spawnite/schema/exports/-collision-shape.js +1 -0
  964. package/dist-browser/@spawnite/schema/exports/-cover-kind.js +1 -0
  965. package/dist-browser/@spawnite/schema/exports/-credential-kind.js +1 -0
  966. package/dist-browser/@spawnite/schema/exports/-device-class.js +1 -0
  967. package/dist-browser/@spawnite/schema/exports/-engine-save-name.js +1 -0
  968. package/dist-browser/@spawnite/schema/exports/-favorite-kind.js +1 -0
  969. package/dist-browser/@spawnite/schema/exports/-model-style.js +1 -0
  970. package/dist-browser/@spawnite/schema/exports/-page-connection-status.js +1 -0
  971. package/dist-browser/@spawnite/schema/exports/-page-message-type.js +1 -0
  972. package/dist-browser/@spawnite/schema/exports/-performance-stats-mode.js +1 -0
  973. package/dist-browser/@spawnite/schema/exports/-prop-shape.js +1 -0
  974. package/dist-browser/@spawnite/schema/exports/-quality-group.js +1 -0
  975. package/dist-browser/@spawnite/schema/exports/-quality-level.js +1 -0
  976. package/dist-browser/@spawnite/schema/exports/-room-mode.js +1 -0
  977. package/dist-browser/@spawnite/schema/exports/-save-owner-change.js +1 -0
  978. package/dist-browser/@spawnite/schema/exports/-save-section.js +1 -0
  979. package/dist-browser/@spawnite/schema/exports/-scatter-family.js +1 -0
  980. package/dist-browser/@spawnite/schema/exports/-scatter-kind.js +1 -0
  981. package/dist-browser/@spawnite/schema/exports/-shot-angle.js +1 -0
  982. package/dist-browser/@spawnite/schema/exports/-voice-mode.js +1 -0
  983. package/dist-browser/@spawnite/schema/exports/-wiki-scope.js +1 -0
  984. package/dist-browser/@spawnite/schema/exports/add-asset-input.js +1 -0
  985. package/dist-browser/@spawnite/schema/exports/add-behaviour-input.js +1 -0
  986. package/dist-browser/@spawnite/schema/exports/add-dialog-input.js +1 -0
  987. package/dist-browser/@spawnite/schema/exports/add-entity-input.js +1 -0
  988. package/dist-browser/@spawnite/schema/exports/add-hud-input.js +1 -0
  989. package/dist-browser/@spawnite/schema/exports/add-item-input.js +1 -0
  990. package/dist-browser/@spawnite/schema/exports/add-map-input.js +1 -0
  991. package/dist-browser/@spawnite/schema/exports/add-npc-input.js +1 -0
  992. package/dist-browser/@spawnite/schema/exports/add-panel-input.js +1 -0
  993. package/dist-browser/@spawnite/schema/exports/add-scene-input.js +1 -0
  994. package/dist-browser/@spawnite/schema/exports/add-shader-input.js +1 -0
  995. package/dist-browser/@spawnite/schema/exports/agent-activity-event.js +1 -0
  996. package/dist-browser/@spawnite/schema/exports/agent-heartbeat-milliseconds.js +1 -0
  997. package/dist-browser/@spawnite/schema/exports/app-channel-version.js +1 -0
  998. package/dist-browser/@spawnite/schema/exports/app-credential.js +1 -0
  999. package/dist-browser/@spawnite/schema/exports/app-inset-edges.js +1 -0
  1000. package/dist-browser/@spawnite/schema/exports/app-insets.js +1 -0
  1001. package/dist-browser/@spawnite/schema/exports/app-message-versions.js +1 -0
  1002. package/dist-browser/@spawnite/schema/exports/app-message.js +1 -0
  1003. package/dist-browser/@spawnite/schema/exports/app-player.js +1 -0
  1004. package/dist-browser/@spawnite/schema/exports/app-settings-message.js +1 -0
  1005. package/dist-browser/@spawnite/schema/exports/asset-catalog.js +1 -0
  1006. package/dist-browser/@spawnite/schema/exports/asset-category.js +1 -0
  1007. package/dist-browser/@spawnite/schema/exports/asset-declaration.js +1 -0
  1008. package/dist-browser/@spawnite/schema/exports/asset-entry.js +1 -0
  1009. package/dist-browser/@spawnite/schema/exports/asset-filters.js +1 -0
  1010. package/dist-browser/@spawnite/schema/exports/asset-key.js +1 -0
  1011. package/dist-browser/@spawnite/schema/exports/asset-kind.js +1 -0
  1012. package/dist-browser/@spawnite/schema/exports/asset-licence.js +1 -0
  1013. package/dist-browser/@spawnite/schema/exports/asset-manifest.js +1 -0
  1014. package/dist-browser/@spawnite/schema/exports/asset-source.js +1 -0
  1015. package/dist-browser/@spawnite/schema/exports/asset-style.js +1 -0
  1016. package/dist-browser/@spawnite/schema/exports/asset-url.js +1 -0
  1017. package/dist-browser/@spawnite/schema/exports/assets-site.js +1 -0
  1018. package/dist-browser/@spawnite/schema/exports/brush-shapes.js +1 -0
  1019. package/dist-browser/@spawnite/schema/exports/build-save-manifest-entry.js +1 -0
  1020. package/dist-browser/@spawnite/schema/exports/bundle-file.js +1 -0
  1021. package/dist-browser/@spawnite/schema/exports/bundle-limits.js +1 -0
  1022. package/dist-browser/@spawnite/schema/exports/bundle-manifest-file.js +1 -0
  1023. package/dist-browser/@spawnite/schema/exports/bundle-manifest.js +1 -0
  1024. package/dist-browser/@spawnite/schema/exports/bundle-page-folder.js +1 -0
  1025. package/dist-browser/@spawnite/schema/exports/bundle-server-folder.js +1 -0
  1026. package/dist-browser/@spawnite/schema/exports/carried-setting-key-list.js +1 -0
  1027. package/dist-browser/@spawnite/schema/exports/carried-setting-keys.js +1 -0
  1028. package/dist-browser/@spawnite/schema/exports/carried-settings.js +1 -0
  1029. package/dist-browser/@spawnite/schema/exports/catalog-row.js +1 -0
  1030. package/dist-browser/@spawnite/schema/exports/cell-paint.js +1 -0
  1031. package/dist-browser/@spawnite/schema/exports/channel-connect.js +1 -0
  1032. package/dist-browser/@spawnite/schema/exports/channel-hello.js +1 -0
  1033. package/dist-browser/@spawnite/schema/exports/chat-folder-name.js +1 -0
  1034. package/dist-browser/@spawnite/schema/exports/chat-path.js +1 -0
  1035. package/dist-browser/@spawnite/schema/exports/chat-post.js +1 -0
  1036. package/dist-browser/@spawnite/schema/exports/chat-read-folder-name.js +1 -0
  1037. package/dist-browser/@spawnite/schema/exports/check-game-slug.js +1 -0
  1038. package/dist-browser/@spawnite/schema/exports/check-model-input.js +1 -0
  1039. package/dist-browser/@spawnite/schema/exports/check-save-migrations.js +1 -0
  1040. package/dist-browser/@spawnite/schema/exports/check-save-publish.js +1 -0
  1041. package/dist-browser/@spawnite/schema/exports/check-sound-input.js +1 -0
  1042. package/dist-browser/@spawnite/schema/exports/clip-finish.js +1 -0
  1043. package/dist-browser/@spawnite/schema/exports/clip-meta.js +1 -0
  1044. package/dist-browser/@spawnite/schema/exports/clip-name.js +1 -0
  1045. package/dist-browser/@spawnite/schema/exports/clips-folder-name.js +1 -0
  1046. package/dist-browser/@spawnite/schema/exports/clips-path.js +1 -0
  1047. package/dist-browser/@spawnite/schema/exports/compare-save-manifest-entries.js +1 -0
  1048. package/dist-browser/@spawnite/schema/exports/compare-shots-input.js +1 -0
  1049. package/dist-browser/@spawnite/schema/exports/component-name.js +1 -0
  1050. package/dist-browser/@spawnite/schema/exports/condition-seconds.js +1 -0
  1051. package/dist-browser/@spawnite/schema/exports/connection-message.js +1 -0
  1052. package/dist-browser/@spawnite/schema/exports/create-quality-schema.js +1 -0
  1053. package/dist-browser/@spawnite/schema/exports/create-site.js +1 -0
  1054. package/dist-browser/@spawnite/schema/exports/create-tagged-save-value-schema.js +1 -0
  1055. package/dist-browser/@spawnite/schema/exports/credential-versions.js +1 -0
  1056. package/dist-browser/@spawnite/schema/exports/day-hour.js +1 -0
  1057. package/dist-browser/@spawnite/schema/exports/day-length.js +1 -0
  1058. package/dist-browser/@spawnite/schema/exports/default-player-settings.js +1 -0
  1059. package/dist-browser/@spawnite/schema/exports/default-room-players.js +1 -0
  1060. package/dist-browser/@spawnite/schema/exports/default-room-send-rate.js +1 -0
  1061. package/dist-browser/@spawnite/schema/exports/describe-entity-input.js +1 -0
  1062. package/dist-browser/@spawnite/schema/exports/describe-map-input.js +1 -0
  1063. package/dist-browser/@spawnite/schema/exports/describe-save-publish-refusal.js +1 -0
  1064. package/dist-browser/@spawnite/schema/exports/dev-saves-cleared-file.js +1 -0
  1065. package/dist-browser/@spawnite/schema/exports/dev-saves-cleared-meta-name.js +1 -0
  1066. package/dist-browser/@spawnite/schema/exports/dev-saves-folder.js +1 -0
  1067. package/dist-browser/@spawnite/schema/exports/dev-server-file.js +1 -0
  1068. package/dist-browser/@spawnite/schema/exports/dev-server-prefix.js +1 -0
  1069. package/dist-browser/@spawnite/schema/exports/devtools-favorites.js +1 -0
  1070. package/dist-browser/@spawnite/schema/exports/devtools-presets.js +1 -0
  1071. package/dist-browser/@spawnite/schema/exports/direct-link.js +1 -0
  1072. package/dist-browser/@spawnite/schema/exports/edit-material-input.js +1 -0
  1073. package/dist-browser/@spawnite/schema/exports/edit-terrain-input.js +1 -0
  1074. package/dist-browser/@spawnite/schema/exports/engine-build-meta-name.js +1 -0
  1075. package/dist-browser/@spawnite/schema/exports/engine-build-path.js +1 -0
  1076. package/dist-browser/@spawnite/schema/exports/engine-label.js +1 -0
  1077. package/dist-browser/@spawnite/schema/exports/engine-origin.js +1 -0
  1078. package/dist-browser/@spawnite/schema/exports/engine-save-readers.js +1 -0
  1079. package/dist-browser/@spawnite/schema/exports/engine-save-schemas.js +1 -0
  1080. package/dist-browser/@spawnite/schema/exports/error-reports-config.js +1 -0
  1081. package/dist-browser/@spawnite/schema/exports/error-reports-meta-name.js +1 -0
  1082. package/dist-browser/@spawnite/schema/exports/error-reports-path.js +1 -0
  1083. package/dist-browser/@spawnite/schema/exports/favorite-field.js +1 -0
  1084. package/dist-browser/@spawnite/schema/exports/filter-assets.js +1 -0
  1085. package/dist-browser/@spawnite/schema/exports/find-particle-effect-excess.js +1 -0
  1086. package/dist-browser/@spawnite/schema/exports/find-room-settings-problems.js +1 -0
  1087. package/dist-browser/@spawnite/schema/exports/find-terrain-cell.js +1 -0
  1088. package/dist-browser/@spawnite/schema/exports/fingerprint-save-schema.js +1 -0
  1089. package/dist-browser/@spawnite/schema/exports/format-clip-length.js +1 -0
  1090. package/dist-browser/@spawnite/schema/exports/format-clip-size.js +1 -0
  1091. package/dist-browser/@spawnite/schema/exports/format-link-conditions.js +1 -0
  1092. package/dist-browser/@spawnite/schema/exports/framed-shot-schema.js +1 -0
  1093. package/dist-browser/@spawnite/schema/exports/fullscreen-answer-message.js +1 -0
  1094. package/dist-browser/@spawnite/schema/exports/fullscreen-message.js +1 -0
  1095. package/dist-browser/@spawnite/schema/exports/game-materials-name.js +1 -0
  1096. package/dist-browser/@spawnite/schema/exports/game-materials-schema.js +1 -0
  1097. package/dist-browser/@spawnite/schema/exports/game-origin.js +1 -0
  1098. package/dist-browser/@spawnite/schema/exports/game-page-path.js +1 -0
  1099. package/dist-browser/@spawnite/schema/exports/game-save-key.js +1 -0
  1100. package/dist-browser/@spawnite/schema/exports/grid-map.js +1 -0
  1101. package/dist-browser/@spawnite/schema/exports/ground-rule-schema.js +1 -0
  1102. package/dist-browser/@spawnite/schema/exports/ground-schema.js +1 -0
  1103. package/dist-browser/@spawnite/schema/exports/hud-slot.js +1 -0
  1104. package/dist-browser/@spawnite/schema/exports/init-message.js +1 -0
  1105. package/dist-browser/@spawnite/schema/exports/init-save.js +1 -0
  1106. package/dist-browser/@spawnite/schema/exports/insets-message.js +1 -0
  1107. package/dist-browser/@spawnite/schema/exports/is-additive-schema-change.js +1 -0
  1108. package/dist-browser/@spawnite/schema/exports/is-game-id.js +1 -0
  1109. package/dist-browser/@spawnite/schema/exports/is-game-slug.js +1 -0
  1110. package/dist-browser/@spawnite/schema/exports/is-kept-label.js +1 -0
  1111. package/dist-browser/@spawnite/schema/exports/is-link-direct.js +1 -0
  1112. package/dist-browser/@spawnite/schema/exports/is-older-reader.js +1 -0
  1113. package/dist-browser/@spawnite/schema/exports/is-particle-effect-looping.js +1 -0
  1114. package/dist-browser/@spawnite/schema/exports/is-room-players.js +1 -0
  1115. package/dist-browser/@spawnite/schema/exports/is-room-send-rate.js +1 -0
  1116. package/dist-browser/@spawnite/schema/exports/item-definition.js +1 -0
  1117. package/dist-browser/@spawnite/schema/exports/join-room-input.js +1 -0
  1118. package/dist-browser/@spawnite/schema/exports/leave-message.js +1 -0
  1119. package/dist-browser/@spawnite/schema/exports/left-message.js +1 -0
  1120. package/dist-browser/@spawnite/schema/exports/list-assets-input.js +1 -0
  1121. package/dist-browser/@spawnite/schema/exports/list-clips-input.js +1 -0
  1122. package/dist-browser/@spawnite/schema/exports/list-templates-input.js +1 -0
  1123. package/dist-browser/@spawnite/schema/exports/list-wiki-input.js +1 -0
  1124. package/dist-browser/@spawnite/schema/exports/long-call-input.js +1 -0
  1125. package/dist-browser/@spawnite/schema/exports/longest-timeout-seconds.js +1 -0
  1126. package/dist-browser/@spawnite/schema/exports/make-model-input.js +1 -0
  1127. package/dist-browser/@spawnite/schema/exports/map-base-schema.js +1 -0
  1128. package/dist-browser/@spawnite/schema/exports/map-path.js +1 -0
  1129. package/dist-browser/@spawnite/schema/exports/map-point.js +1 -0
  1130. package/dist-browser/@spawnite/schema/exports/map-post.js +1 -0
  1131. package/dist-browser/@spawnite/schema/exports/map-prop-schema.js +1 -0
  1132. package/dist-browser/@spawnite/schema/exports/map-props-patch.js +1 -0
  1133. package/dist-browser/@spawnite/schema/exports/map-props-schema.js +1 -0
  1134. package/dist-browser/@spawnite/schema/exports/map-schema.js +1 -0
  1135. package/dist-browser/@spawnite/schema/exports/map-sea-schema.js +1 -0
  1136. package/dist-browser/@spawnite/schema/exports/map-terrain-schema.js +1 -0
  1137. package/dist-browser/@spawnite/schema/exports/material-cover-schema.js +1 -0
  1138. package/dist-browser/@spawnite/schema/exports/material-look-schema.js +1 -0
  1139. package/dist-browser/@spawnite/schema/exports/material-name.js +1 -0
  1140. package/dist-browser/@spawnite/schema/exports/material-sets.js +1 -0
  1141. package/dist-browser/@spawnite/schema/exports/materials-schema.js +1 -0
  1142. package/dist-browser/@spawnite/schema/exports/max-error-report-bytes.js +1 -0
  1143. package/dist-browser/@spawnite/schema/exports/max-save-body-bytes.js +1 -0
  1144. package/dist-browser/@spawnite/schema/exports/max-save-body-ceiling-bytes.js +1 -0
  1145. package/dist-browser/@spawnite/schema/exports/max-save-unpacked-bytes.js +1 -0
  1146. package/dist-browser/@spawnite/schema/exports/max-save-unpacked-ceiling-bytes.js +1 -0
  1147. package/dist-browser/@spawnite/schema/exports/menu-message.js +1 -0
  1148. package/dist-browser/@spawnite/schema/exports/merge-carried-settings.js +1 -0
  1149. package/dist-browser/@spawnite/schema/exports/merge-save-highest.js +1 -0
  1150. package/dist-browser/@spawnite/schema/exports/model-reference-schema.js +1 -0
  1151. package/dist-browser/@spawnite/schema/exports/model-triangle-budget.js +1 -0
  1152. package/dist-browser/@spawnite/schema/exports/most-rejoin-hold-seconds.js +1 -0
  1153. package/dist-browser/@spawnite/schema/exports/most-room-players.js +1 -0
  1154. package/dist-browser/@spawnite/schema/exports/name-schema.js +1 -0
  1155. package/dist-browser/@spawnite/schema/exports/new-game-input.js +1 -0
  1156. package/dist-browser/@spawnite/schema/exports/package-room-hint.js +1 -0
  1157. package/dist-browser/@spawnite/schema/exports/package-room.js +1 -0
  1158. package/dist-browser/@spawnite/schema/exports/page-message-versions.js +1 -0
  1159. package/dist-browser/@spawnite/schema/exports/page-message.js +1 -0
  1160. package/dist-browser/@spawnite/schema/exports/page-settings-message.js +1 -0
  1161. package/dist-browser/@spawnite/schema/exports/parse-link-conditions.js +1 -0
  1162. package/dist-browser/@spawnite/schema/exports/particle-effect-limits.js +1 -0
  1163. package/dist-browser/@spawnite/schema/exports/particle-sprite-max-side.js +1 -0
  1164. package/dist-browser/@spawnite/schema/exports/place-loot-input.js +1 -0
  1165. package/dist-browser/@spawnite/schema/exports/place-props-input.js +1 -0
  1166. package/dist-browser/@spawnite/schema/exports/play-domain.js +1 -0
  1167. package/dist-browser/@spawnite/schema/exports/profile-game-input.js +1 -0
  1168. package/dist-browser/@spawnite/schema/exports/project-folder.js +1 -0
  1169. package/dist-browser/@spawnite/schema/exports/publish-assets-input.js +1 -0
  1170. package/dist-browser/@spawnite/schema/exports/publish-version-input.js +1 -0
  1171. package/dist-browser/@spawnite/schema/exports/query-map-input.js +1 -0
  1172. package/dist-browser/@spawnite/schema/exports/read-ai-tree-input.js +1 -0
  1173. package/dist-browser/@spawnite/schema/exports/read-chat-input.js +1 -0
  1174. package/dist-browser/@spawnite/schema/exports/read-clip-input.js +1 -0
  1175. package/dist-browser/@spawnite/schema/exports/read-clip-start-time.js +1 -0
  1176. package/dist-browser/@spawnite/schema/exports/read-game-id.js +1 -0
  1177. package/dist-browser/@spawnite/schema/exports/read-game-wiki-input.js +1 -0
  1178. package/dist-browser/@spawnite/schema/exports/read-package-room.js +1 -0
  1179. package/dist-browser/@spawnite/schema/exports/read-paint-grid.js +1 -0
  1180. package/dist-browser/@spawnite/schema/exports/read-particle-effect.js +1 -0
  1181. package/dist-browser/@spawnite/schema/exports/read-room-mode.js +1 -0
  1182. package/dist-browser/@spawnite/schema/exports/read-run-input.js +1 -0
  1183. package/dist-browser/@spawnite/schema/exports/read-save-mark.js +1 -0
  1184. package/dist-browser/@spawnite/schema/exports/read-save-record.js +1 -0
  1185. package/dist-browser/@spawnite/schema/exports/read-terrain-grid.js +1 -0
  1186. package/dist-browser/@spawnite/schema/exports/read-track-level.js +1 -0
  1187. package/dist-browser/@spawnite/schema/exports/read-wiki-input.js +1 -0
  1188. package/dist-browser/@spawnite/schema/exports/ready-message.js +1 -0
  1189. package/dist-browser/@spawnite/schema/exports/record-clip-input.js +1 -0
  1190. package/dist-browser/@spawnite/schema/exports/registry-entry.js +1 -0
  1191. package/dist-browser/@spawnite/schema/exports/registry-file.js +1 -0
  1192. package/dist-browser/@spawnite/schema/exports/registry-item-schema-url.js +1 -0
  1193. package/dist-browser/@spawnite/schema/exports/registry-item.js +1 -0
  1194. package/dist-browser/@spawnite/schema/exports/registry-schema-url.js +1 -0
  1195. package/dist-browser/@spawnite/schema/exports/registry.js +1 -0
  1196. package/dist-browser/@spawnite/schema/exports/resolve-room-settings.js +1 -0
  1197. package/dist-browser/@spawnite/schema/exports/reverse-wiki-relation.js +1 -0
  1198. package/dist-browser/@spawnite/schema/exports/room-send-rates.js +1 -0
  1199. package/dist-browser/@spawnite/schema/exports/save-codec-mark.js +1 -0
  1200. package/dist-browser/@spawnite/schema/exports/save-failed-message.js +1 -0
  1201. package/dist-browser/@spawnite/schema/exports/save-fingerprint-format.js +1 -0
  1202. package/dist-browser/@spawnite/schema/exports/save-limit-warning-share.js +1 -0
  1203. package/dist-browser/@spawnite/schema/exports/save-load-failed-message.js +1 -0
  1204. package/dist-browser/@spawnite/schema/exports/save-message.js +1 -0
  1205. package/dist-browser/@spawnite/schema/exports/save-now-message.js +1 -0
  1206. package/dist-browser/@spawnite/schema/exports/save-record-message.js +1 -0
  1207. package/dist-browser/@spawnite/schema/exports/saved-health-schema.js +1 -0
  1208. package/dist-browser/@spawnite/schema/exports/saved-level-schema.js +1 -0
  1209. package/dist-browser/@spawnite/schema/exports/saved-message.js +1 -0
  1210. package/dist-browser/@spawnite/schema/exports/saved-stack-schema.js +1 -0
  1211. package/dist-browser/@spawnite/schema/exports/saved-stat-schema.js +1 -0
  1212. package/dist-browser/@spawnite/schema/exports/saved-vector-schema.js +1 -0
  1213. package/dist-browser/@spawnite/schema/exports/scatter-kinds.js +1 -0
  1214. package/dist-browser/@spawnite/schema/exports/scene-name.js +1 -0
  1215. package/dist-browser/@spawnite/schema/exports/screenshot-input.js +1 -0
  1216. package/dist-browser/@spawnite/schema/exports/search-wiki-input.js +1 -0
  1217. package/dist-browser/@spawnite/schema/exports/seat-credential.js +1 -0
  1218. package/dist-browser/@spawnite/schema/exports/seat-message.js +1 -0
  1219. package/dist-browser/@spawnite/schema/exports/send-input-input.js +1 -0
  1220. package/dist-browser/@spawnite/schema/exports/servers-folder-name.js +1 -0
  1221. package/dist-browser/@spawnite/schema/exports/set-nickname-input.js +1 -0
  1222. package/dist-browser/@spawnite/schema/exports/set-trait-input.js +1 -0
  1223. package/dist-browser/@spawnite/schema/exports/set-visibility-input.js +1 -0
  1224. package/dist-browser/@spawnite/schema/exports/settings-schema.js +1 -0
  1225. package/dist-browser/@spawnite/schema/exports/shot-angle-schema.js +1 -0
  1226. package/dist-browser/@spawnite/schema/exports/shot-camera-schema.js +1 -0
  1227. package/dist-browser/@spawnite/schema/exports/shot-post.js +1 -0
  1228. package/dist-browser/@spawnite/schema/exports/shots-folder-name.js +1 -0
  1229. package/dist-browser/@spawnite/schema/exports/shots-path.js +1 -0
  1230. package/dist-browser/@spawnite/schema/exports/simulate-input.js +1 -0
  1231. package/dist-browser/@spawnite/schema/exports/slug-limits.js +1 -0
  1232. package/dist-browser/@spawnite/schema/exports/slugify-game-name.js +1 -0
  1233. package/dist-browser/@spawnite/schema/exports/snapshot-save-schema.js +1 -0
  1234. package/dist-browser/@spawnite/schema/exports/space-point-schema.js +1 -0
  1235. package/dist-browser/@spawnite/schema/exports/spawnite-folder-name.js +1 -0
  1236. package/dist-browser/@spawnite/schema/exports/start-playtest-input.js +1 -0
  1237. package/dist-browser/@spawnite/schema/exports/start-save-key.js +1 -0
  1238. package/dist-browser/@spawnite/schema/exports/steps-per-second.js +1 -0
  1239. package/dist-browser/@spawnite/schema/exports/store-age-bands.js +1 -0
  1240. package/dist-browser/@spawnite/schema/exports/store-page-limits.js +1 -0
  1241. package/dist-browser/@spawnite/schema/exports/store-page.js +1 -0
  1242. package/dist-browser/@spawnite/schema/exports/store-picture-rules.js +1 -0
  1243. package/dist-browser/@spawnite/schema/exports/store-picture.js +1 -0
  1244. package/dist-browser/@spawnite/schema/exports/tab-info.js +1 -0
  1245. package/dist-browser/@spawnite/schema/exports/tab-path.js +1 -0
  1246. package/dist-browser/@spawnite/schema/exports/tab-post.js +1 -0
  1247. package/dist-browser/@spawnite/schema/exports/tab-token-header.js +1 -0
  1248. package/dist-browser/@spawnite/schema/exports/tagged-save-value-schema.js +1 -0
  1249. package/dist-browser/@spawnite/schema/exports/terrain-brush.js +1 -0
  1250. package/dist-browser/@spawnite/schema/exports/terrain-fill.js +1 -0
  1251. package/dist-browser/@spawnite/schema/exports/terrain-map.js +1 -0
  1252. package/dist-browser/@spawnite/schema/exports/terrain-restore.js +1 -0
  1253. package/dist-browser/@spawnite/schema/exports/terrain-settlings.js +1 -0
  1254. package/dist-browser/@spawnite/schema/exports/terrain-stroke-shape.js +1 -0
  1255. package/dist-browser/@spawnite/schema/exports/terrain-stroke.js +1 -0
  1256. package/dist-browser/@spawnite/schema/exports/terrain-tools.js +1 -0
  1257. package/dist-browser/@spawnite/schema/exports/timeline-input.js +1 -0
  1258. package/dist-browser/@spawnite/schema/exports/to-display-name.js +1 -0
  1259. package/dist-browser/@spawnite/schema/exports/to-wiki-anchor.js +1 -0
  1260. package/dist-browser/@spawnite/schema/exports/track-level-schema.js +1 -0
  1261. package/dist-browser/@spawnite/schema/exports/untouched.js +1 -0
  1262. package/dist-browser/@spawnite/schema/exports/upload-store-page-input.js +1 -0
  1263. package/dist-browser/@spawnite/schema/exports/upload-version-input.js +1 -0
  1264. package/dist-browser/@spawnite/schema/exports/versions-of-save-manifest-entry.js +1 -0
  1265. package/dist-browser/@spawnite/schema/exports/versions-of.js +1 -0
  1266. package/dist-browser/@spawnite/schema/exports/view-schema.js +1 -0
  1267. package/dist-browser/@spawnite/schema/exports/voice-settings.js +1 -0
  1268. package/dist-browser/@spawnite/schema/exports/whoami-input.js +1 -0
  1269. package/dist-browser/@spawnite/schema/exports/wiki-overview-path.js +1 -0
  1270. package/dist-browser/@spawnite/schema/exports/wiki-page-path.js +1 -0
  1271. package/dist-browser/@spawnite/schema/exports/wiki-page-ref.js +1 -0
  1272. package/dist-browser/@spawnite/schema/exports/wiki-path-part.js +1 -0
  1273. package/dist-browser/@spawnite/schema/exports/wiki-site.js +1 -0
  1274. package/dist-browser/@spawnite/schema/exports/write-link-settings.js +1 -0
  1275. package/dist-browser/@spawnite/schema/exports/write-paint-grid.js +1 -0
  1276. package/dist-browser/@spawnite/schema/exports/write-save-record.js +1 -0
  1277. package/dist-browser/@spawnite/schema/exports/write-terrain-grid.js +1 -0
  1278. package/dist-browser/@spawnite/schema/exports/write-wiki-page-input.js +1 -0
  1279. package/dist-browser/@spawnite/schema/exports/z.js +1 -0
  1280. package/dist-browser/@spawnite/schema.js +1 -0
  1281. package/dist-browser/@spawnite/ui/motion.js +1 -0
  1282. package/dist-browser/@spawnite/ui.js +1 -0
  1283. package/dist-browser/THIRD-PARTY-NOTICES +2949 -0
  1284. package/dist-browser/assets/basis_transcoder-VXdx5NbI.wasm +0 -0
  1285. package/dist-browser/assets/basis_transcoder-o4Hde_L7.js +19 -0
  1286. package/dist-browser/assets/draco_decoder-C32yEggz.wasm +0 -0
  1287. package/dist-browser/assets/draco_decoder-Z1_iN-Ht.wasm +0 -0
  1288. package/dist-browser/assets/draco_decoder-fzg4nYZr.js +34 -0
  1289. package/dist-browser/assets/draco_wasm_wrapper-DxJM36Ib.js +117 -0
  1290. package/dist-browser/assets/draco_wasm_wrapper-fZCQGLGb.js +116 -0
  1291. package/dist-browser/assets/rapier_wasm3d_bg-CcJdV3OS.wasm +0 -0
  1292. package/dist-browser/chunks/-8xKUVc-.js +1 -0
  1293. package/dist-browser/chunks/0Bppyo06.js +1 -0
  1294. package/dist-browser/chunks/0XBYBf4e.js +1 -0
  1295. package/dist-browser/chunks/1Pk4GW-o.js +1 -0
  1296. package/dist-browser/chunks/1TfeBVY_.js +1 -0
  1297. package/dist-browser/chunks/2GzBwp8F.js +1 -0
  1298. package/dist-browser/chunks/37dBpPRN.js +1 -0
  1299. package/dist-browser/chunks/3GDQ_l39.js +1 -0
  1300. package/dist-browser/chunks/4r3wlCT-.js +56 -0
  1301. package/dist-browser/chunks/51muForc.js +2 -0
  1302. package/dist-browser/chunks/5l3Kj8OA.js +25 -0
  1303. package/dist-browser/chunks/5v0sm-la.js +1 -0
  1304. package/dist-browser/chunks/6RSie8Zr.js +1 -0
  1305. package/dist-browser/chunks/6VxScSBj.js +1 -0
  1306. package/dist-browser/chunks/6r1L_s87.js +1 -0
  1307. package/dist-browser/chunks/703AF8IC.js +2 -0
  1308. package/dist-browser/chunks/7kk1UrXM.js +54 -0
  1309. package/dist-browser/chunks/7v-xFmSc.js +1 -0
  1310. package/dist-browser/chunks/8CwB1oG9.js +1 -0
  1311. package/dist-browser/chunks/8GjxAP3h.js +1 -0
  1312. package/dist-browser/chunks/8Pep1QKH.js +1 -0
  1313. package/dist-browser/chunks/8eSx71cM.js +1 -0
  1314. package/dist-browser/chunks/8qLBuj0B.js +1 -0
  1315. package/dist-browser/chunks/8uMFNz4F.js +48 -0
  1316. package/dist-browser/chunks/9BUmmiDi.js +64 -0
  1317. package/dist-browser/chunks/AEQH3xKs.js +1 -0
  1318. package/dist-browser/chunks/B04SdTxo.js +1 -0
  1319. package/dist-browser/chunks/B0d1OhsT.js +1 -0
  1320. package/dist-browser/chunks/B0d94ulh.js +1 -0
  1321. package/dist-browser/chunks/B0dIJJnS.js +104 -0
  1322. package/dist-browser/chunks/B0sEcOA4.js +1 -0
  1323. package/dist-browser/chunks/B17MsfBW.js +2 -0
  1324. package/dist-browser/chunks/B1Q2EYQa.js +409 -0
  1325. package/dist-browser/chunks/B1VGbFnq.js +1 -0
  1326. package/dist-browser/chunks/B1ZLDwkb.js +1 -0
  1327. package/dist-browser/chunks/B1gZ4XNT.js +1 -0
  1328. package/dist-browser/chunks/B2P8OKx4.js +114 -0
  1329. package/dist-browser/chunks/B2lwHY_A.js +1 -0
  1330. package/dist-browser/chunks/B2rfjAu3.js +1 -0
  1331. package/dist-browser/chunks/B3cpZ7qW.js +1 -0
  1332. package/dist-browser/chunks/B3zyuqQe.js +1 -0
  1333. package/dist-browser/chunks/B4HH7vxm.js +1 -0
  1334. package/dist-browser/chunks/B4L72GuI.js +1 -0
  1335. package/dist-browser/chunks/B4PXM93E.js +1 -0
  1336. package/dist-browser/chunks/B4dyXOK4.js +2 -0
  1337. package/dist-browser/chunks/B4f83JmW.js +1 -0
  1338. package/dist-browser/chunks/B4rtOA11.js +1 -0
  1339. package/dist-browser/chunks/B53Q2-Fw.js +42 -0
  1340. package/dist-browser/chunks/B5YG9Ima.js +35 -0
  1341. package/dist-browser/chunks/B5npwEiE.js +1 -0
  1342. package/dist-browser/chunks/B6TyyPfn.js +2280 -0
  1343. package/dist-browser/chunks/B6YPgX9B.js +1 -0
  1344. package/dist-browser/chunks/B7K2KMcP.js +289 -0
  1345. package/dist-browser/chunks/B8GCRzu-.js +1 -0
  1346. package/dist-browser/chunks/B8f3enUO.js +42 -0
  1347. package/dist-browser/chunks/B9dPPcmc.js +239 -0
  1348. package/dist-browser/chunks/B9n7U8x8.js +24 -0
  1349. package/dist-browser/chunks/BAcEoh4A.js +1 -0
  1350. package/dist-browser/chunks/BBTy17gV.js +23 -0
  1351. package/dist-browser/chunks/BBoWq_28.js +1 -0
  1352. package/dist-browser/chunks/BCEkROxA.js +1 -0
  1353. package/dist-browser/chunks/BCSDojKA.js +2 -0
  1354. package/dist-browser/chunks/BCnGjanZ.js +1 -0
  1355. package/dist-browser/chunks/BCy2Imwl.js +1 -0
  1356. package/dist-browser/chunks/BD93nK4k.js +1 -0
  1357. package/dist-browser/chunks/BDYWv4Pt.js +1 -0
  1358. package/dist-browser/chunks/BDntRBeD.js +1 -0
  1359. package/dist-browser/chunks/BE0sHH_C.js +1 -0
  1360. package/dist-browser/chunks/BE7yKwOS.js +1 -0
  1361. package/dist-browser/chunks/BFDqfrDx.js +61 -0
  1362. package/dist-browser/chunks/BFnCgym5.js +1 -0
  1363. package/dist-browser/chunks/BFpenkAR.js +1 -0
  1364. package/dist-browser/chunks/BFvqTjM2.js +1 -0
  1365. package/dist-browser/chunks/BG8QaCAl.js +1 -0
  1366. package/dist-browser/chunks/BGsrJU1n.js +219 -0
  1367. package/dist-browser/chunks/BGze3w87.js +1 -0
  1368. package/dist-browser/chunks/BHYG5big.js +1 -0
  1369. package/dist-browser/chunks/BHZuFsZC.js +26 -0
  1370. package/dist-browser/chunks/BHePouWp.js +1 -0
  1371. package/dist-browser/chunks/BIGc2B5x.js +106 -0
  1372. package/dist-browser/chunks/BIgbJOA7.js +1 -0
  1373. package/dist-browser/chunks/BIlEJ_uM.js +1 -0
  1374. package/dist-browser/chunks/BIrJsLCp.js +1 -0
  1375. package/dist-browser/chunks/BJCTIWwI.js +97 -0
  1376. package/dist-browser/chunks/BJWwGEft.js +22 -0
  1377. package/dist-browser/chunks/BJbnvkQD.js +33 -0
  1378. package/dist-browser/chunks/BJj_P5qy.js +40 -0
  1379. package/dist-browser/chunks/BKMmwIjP.js +1 -0
  1380. package/dist-browser/chunks/BL2b-bga.js +1 -0
  1381. package/dist-browser/chunks/BL3GFPpX.js +1 -0
  1382. package/dist-browser/chunks/BL3JqalM.js +1 -0
  1383. package/dist-browser/chunks/BLQoPgRQ.js +17 -0
  1384. package/dist-browser/chunks/BLdTHuK5.js +38 -0
  1385. package/dist-browser/chunks/BLxVM0Bx.js +1 -0
  1386. package/dist-browser/chunks/BMOXLfbG.js +1 -0
  1387. package/dist-browser/chunks/BMyF16Pb.js +1 -0
  1388. package/dist-browser/chunks/BN0JituG.js +1 -0
  1389. package/dist-browser/chunks/BNiTh9Zb.js +1 -0
  1390. package/dist-browser/chunks/BNm7BDEl.js +1 -0
  1391. package/dist-browser/chunks/BNucCtAC.js +1 -0
  1392. package/dist-browser/chunks/BOAa4bZ5.js +80 -0
  1393. package/dist-browser/chunks/BOIXSUZ_.js +1 -0
  1394. package/dist-browser/chunks/BOY2osHs.js +1 -0
  1395. package/dist-browser/chunks/BP9HooTj.js +1 -0
  1396. package/dist-browser/chunks/BPsQn259.js +1 -0
  1397. package/dist-browser/chunks/BPyPftW0.js +1 -0
  1398. package/dist-browser/chunks/BQl3ddsW.js +1 -0
  1399. package/dist-browser/chunks/BSaFdJJr.js +1 -0
  1400. package/dist-browser/chunks/BSb5Y-Am.js +1 -0
  1401. package/dist-browser/chunks/BSoHyLeW.js +1 -0
  1402. package/dist-browser/chunks/BUJHJVUo.js +1 -0
  1403. package/dist-browser/chunks/BV45MfzJ.js +206 -0
  1404. package/dist-browser/chunks/BWLobtMG.js +1 -0
  1405. package/dist-browser/chunks/BWX2omqC.js +1 -0
  1406. package/dist-browser/chunks/BX-IJ6Jw.js +1 -0
  1407. package/dist-browser/chunks/BZ67u85L.js +1 -0
  1408. package/dist-browser/chunks/BZL3DkMo.js +1 -0
  1409. package/dist-browser/chunks/BZkTFuN8.js +32 -0
  1410. package/dist-browser/chunks/B_olo1g0.js +1 -0
  1411. package/dist-browser/chunks/B_xcv6lP.js +1 -0
  1412. package/dist-browser/chunks/BadDFgpu.js +3 -0
  1413. package/dist-browser/chunks/BbIllpJG.js +1 -0
  1414. package/dist-browser/chunks/Bc7uTOHd.js +1 -0
  1415. package/dist-browser/chunks/BcH7_nnK.js +1 -0
  1416. package/dist-browser/chunks/Bdd_iq-Z.js +1 -0
  1417. package/dist-browser/chunks/BdkaRoRG.js +3 -0
  1418. package/dist-browser/chunks/BeUM0nnI.js +1 -0
  1419. package/dist-browser/chunks/BfkxY7do.js +13 -0
  1420. package/dist-browser/chunks/BfzfmpKY.js +1 -0
  1421. package/dist-browser/chunks/BgNGXLZH.js +1 -0
  1422. package/dist-browser/chunks/Bgmtnmc9.js +1 -0
  1423. package/dist-browser/chunks/BgtS-68o.js +1 -0
  1424. package/dist-browser/chunks/BhE7ED0P.js +1 -0
  1425. package/dist-browser/chunks/BhG-aLlJ.js +17 -0
  1426. package/dist-browser/chunks/BhtgOF9y.js +1 -0
  1427. package/dist-browser/chunks/BhvPhm_f.js +12 -0
  1428. package/dist-browser/chunks/Bhvb25xz.js +1 -0
  1429. package/dist-browser/chunks/Bi2imP0-.js +1 -0
  1430. package/dist-browser/chunks/Bi4f74NJ.js +1 -0
  1431. package/dist-browser/chunks/BiCMFIxo.js +1 -0
  1432. package/dist-browser/chunks/BiSn0Dtc.js +1 -0
  1433. package/dist-browser/chunks/BiU0PYSX.js +1 -0
  1434. package/dist-browser/chunks/BipZQXT8.js +1 -0
  1435. package/dist-browser/chunks/BiqCT0be.js +1 -0
  1436. package/dist-browser/chunks/BjVVweLJ.js +1 -0
  1437. package/dist-browser/chunks/BjeL5CV8.js +1 -0
  1438. package/dist-browser/chunks/BjikXbkr.js +1 -0
  1439. package/dist-browser/chunks/BkNRpWJF.js +1 -0
  1440. package/dist-browser/chunks/BkWdvCr2.js +1 -0
  1441. package/dist-browser/chunks/BkfYP8sS.js +1 -0
  1442. package/dist-browser/chunks/BkoAp3nt.js +17 -0
  1443. package/dist-browser/chunks/BkuNzUds.js +5 -0
  1444. package/dist-browser/chunks/BlDBqfnQ.js +1 -0
  1445. package/dist-browser/chunks/Blob4piG.js +1 -0
  1446. package/dist-browser/chunks/Bm-NgCJv.js +290 -0
  1447. package/dist-browser/chunks/BmwnZMHR.js +1 -0
  1448. package/dist-browser/chunks/Bn-oguIM.js +1 -0
  1449. package/dist-browser/chunks/Bn8JxKQd.js +947 -0
  1450. package/dist-browser/chunks/Bn8l74kN.js +1 -0
  1451. package/dist-browser/chunks/Bo2vvsC6.js +1 -0
  1452. package/dist-browser/chunks/BoJD7UsQ.js +5 -0
  1453. package/dist-browser/chunks/BoRPdfTd.js +1 -0
  1454. package/dist-browser/chunks/BoTmVVAp.js +1 -0
  1455. package/dist-browser/chunks/BoiOnH_p.js +1 -0
  1456. package/dist-browser/chunks/Bpe2I0GB.js +1 -0
  1457. package/dist-browser/chunks/BqD0o821.js +25 -0
  1458. package/dist-browser/chunks/BqXaJXLb.js +1 -0
  1459. package/dist-browser/chunks/BqsB_Ag5.js +1 -0
  1460. package/dist-browser/chunks/Br-JA8rZ.js +1 -0
  1461. package/dist-browser/chunks/Br2nhNMH.js +1 -0
  1462. package/dist-browser/chunks/BrezGx31.js +3 -0
  1463. package/dist-browser/chunks/BsZMTFvx.js +1 -0
  1464. package/dist-browser/chunks/Bt2nCTua.js +51 -0
  1465. package/dist-browser/chunks/BtM7kQaS.js +1 -0
  1466. package/dist-browser/chunks/BtZNIAhj.js +1 -0
  1467. package/dist-browser/chunks/Btgu8kW9.js +3 -0
  1468. package/dist-browser/chunks/Btjboa9G.js +248 -0
  1469. package/dist-browser/chunks/Btn1Hp7-.js +1 -0
  1470. package/dist-browser/chunks/Bu1cOMsK.js +1 -0
  1471. package/dist-browser/chunks/Bv2bGJo9.js +1 -0
  1472. package/dist-browser/chunks/BvK95JoS.js +1 -0
  1473. package/dist-browser/chunks/BvrPFs0h.js +1 -0
  1474. package/dist-browser/chunks/BvsNGgEj.js +1 -0
  1475. package/dist-browser/chunks/ByyEEkYz.js +1 -0
  1476. package/dist-browser/chunks/BzAJiB5u.js +1 -0
  1477. package/dist-browser/chunks/BzCmY2x1.js +68 -0
  1478. package/dist-browser/chunks/BzKtjbg2.js +1 -0
  1479. package/dist-browser/chunks/BzZ2lwsC.js +134 -0
  1480. package/dist-browser/chunks/BzcZWs3f.js +1 -0
  1481. package/dist-browser/chunks/BzuN4nW7.js +33 -0
  1482. package/dist-browser/chunks/BzwHJPea.js +1 -0
  1483. package/dist-browser/chunks/Bzy44bV2.js +4216 -0
  1484. package/dist-browser/chunks/C-O8NhHK.js +1 -0
  1485. package/dist-browser/chunks/C-_LmeNn.js +934 -0
  1486. package/dist-browser/chunks/C-ztiLpW.js +1 -0
  1487. package/dist-browser/chunks/C0Iji4Qk.js +1 -0
  1488. package/dist-browser/chunks/C12xlM79.js +1 -0
  1489. package/dist-browser/chunks/C1BDCorD.js +99 -0
  1490. package/dist-browser/chunks/C2Dm6eUt.js +1 -0
  1491. package/dist-browser/chunks/C2RePWen.js +1 -0
  1492. package/dist-browser/chunks/C2suuPFw.js +1 -0
  1493. package/dist-browser/chunks/C33aG9gN.js +1 -0
  1494. package/dist-browser/chunks/C3Y15gp1.js +1 -0
  1495. package/dist-browser/chunks/C3gvA1lh.js +1 -0
  1496. package/dist-browser/chunks/C3pLayiC.js +143 -0
  1497. package/dist-browser/chunks/C3wBsE11.js +1 -0
  1498. package/dist-browser/chunks/C4E_bIDB.js +1 -0
  1499. package/dist-browser/chunks/C4OFzvAP.js +1 -0
  1500. package/dist-browser/chunks/C4fzyzUE.js +1 -0
  1501. package/dist-browser/chunks/C5P0RHNI.js +1 -0
  1502. package/dist-browser/chunks/C6XZSTSj.js +39 -0
  1503. package/dist-browser/chunks/C784v2VA.js +1 -0
  1504. package/dist-browser/chunks/C7CUzsYJ.js +1 -0
  1505. package/dist-browser/chunks/C7FykdRJ.js +1 -0
  1506. package/dist-browser/chunks/C7RSxM0z.js +1 -0
  1507. package/dist-browser/chunks/C9J2i9In.js +2 -0
  1508. package/dist-browser/chunks/C9Kd-Lrf.js +1 -0
  1509. package/dist-browser/chunks/C9OKiK4z.js +15 -0
  1510. package/dist-browser/chunks/C9bAX0wX.js +1 -0
  1511. package/dist-browser/chunks/C9duFT9_.js +9 -0
  1512. package/dist-browser/chunks/CA52Vkpa.js +3 -0
  1513. package/dist-browser/chunks/CAB0sdkM.js +8 -0
  1514. package/dist-browser/chunks/CBcRTsvX.js +1 -0
  1515. package/dist-browser/chunks/CC8kNj4O.js +1 -0
  1516. package/dist-browser/chunks/CC_taxfs.js +1 -0
  1517. package/dist-browser/chunks/CCnjeop3.js +1 -0
  1518. package/dist-browser/chunks/CD1Phcj7.js +1 -0
  1519. package/dist-browser/chunks/CDBmfTua.js +1 -0
  1520. package/dist-browser/chunks/CDFKagMr.js +1 -0
  1521. package/dist-browser/chunks/CDZegpP1.js +1 -0
  1522. package/dist-browser/chunks/CD_-ZdOx.js +1 -0
  1523. package/dist-browser/chunks/CDmSfsbx.js +1 -0
  1524. package/dist-browser/chunks/CDy5CkBb.js +1 -0
  1525. package/dist-browser/chunks/CDyybrEA.js +1 -0
  1526. package/dist-browser/chunks/CENY_jwA.js +5 -0
  1527. package/dist-browser/chunks/CEfq3wMj.js +1 -0
  1528. package/dist-browser/chunks/CEtY4HlI.js +1 -0
  1529. package/dist-browser/chunks/CEtbZ-Ou.js +51 -0
  1530. package/dist-browser/chunks/CFVbNh1J.js +1 -0
  1531. package/dist-browser/chunks/CG5A_mHR.js +1 -0
  1532. package/dist-browser/chunks/CGFRQ0IS.js +3 -0
  1533. package/dist-browser/chunks/CGPPrudP.js +1 -0
  1534. package/dist-browser/chunks/CGZdRHCz.js +1 -0
  1535. package/dist-browser/chunks/CG_ggIC3.js +230 -0
  1536. package/dist-browser/chunks/CHD7Siks.js +61 -0
  1537. package/dist-browser/chunks/CHGAmNbz.js +24 -0
  1538. package/dist-browser/chunks/CH_3weAk.js +136 -0
  1539. package/dist-browser/chunks/CHnMaz0U.js +1 -0
  1540. package/dist-browser/chunks/CHx28aAq.js +1 -0
  1541. package/dist-browser/chunks/CIPEdQZg.js +1 -0
  1542. package/dist-browser/chunks/CIU50MA1.js +1 -0
  1543. package/dist-browser/chunks/CIXqygz5.js +42 -0
  1544. package/dist-browser/chunks/CIz-HH07.js +1585 -0
  1545. package/dist-browser/chunks/CJ4zQQhO.js +1 -0
  1546. package/dist-browser/chunks/CJD9mRmQ.js +1 -0
  1547. package/dist-browser/chunks/CJgknJ-O.js +12 -0
  1548. package/dist-browser/chunks/CL1lltpM.js +1 -0
  1549. package/dist-browser/chunks/CLxcu-z_.js +73 -0
  1550. package/dist-browser/chunks/CM3pB59z.js +1 -0
  1551. package/dist-browser/chunks/CM7fr6V2.js +1 -0
  1552. package/dist-browser/chunks/CMCldyjy.js +1 -0
  1553. package/dist-browser/chunks/CMhbdUh_.js +1 -0
  1554. package/dist-browser/chunks/CMj-G0tG.js +1 -0
  1555. package/dist-browser/chunks/CMy5JYMZ.js +1 -0
  1556. package/dist-browser/chunks/CNS048lI.js +1 -0
  1557. package/dist-browser/chunks/CO0SZ1hy.js +1 -0
  1558. package/dist-browser/chunks/COnv2PBF.js +2 -0
  1559. package/dist-browser/chunks/CP27PMpS.js +1 -0
  1560. package/dist-browser/chunks/CQRcPihd.js +6 -0
  1561. package/dist-browser/chunks/CRDIjF8C.js +2 -0
  1562. package/dist-browser/chunks/CRFCYrrv.js +1 -0
  1563. package/dist-browser/chunks/CRL527zA.js +1 -0
  1564. package/dist-browser/chunks/CRuuK4qI.js +1 -0
  1565. package/dist-browser/chunks/CSrliGR5.js +1 -0
  1566. package/dist-browser/chunks/CT24MROG.js +36 -0
  1567. package/dist-browser/chunks/CTKsfpS6.js +1 -0
  1568. package/dist-browser/chunks/CTovL-9G.js +1 -0
  1569. package/dist-browser/chunks/CU2_4WYp.js +1 -0
  1570. package/dist-browser/chunks/CVn3AkL4.js +3 -0
  1571. package/dist-browser/chunks/CW47wlpJ.js +1 -0
  1572. package/dist-browser/chunks/CWtE2FH4.js +6 -0
  1573. package/dist-browser/chunks/CWtqwiJb.js +1 -0
  1574. package/dist-browser/chunks/CX2yvOMR.js +32 -0
  1575. package/dist-browser/chunks/CXYvZiC5.js +1 -0
  1576. package/dist-browser/chunks/CY2_o-A_.js +1 -0
  1577. package/dist-browser/chunks/CYD5IpHG.js +1 -0
  1578. package/dist-browser/chunks/CYFmo-2d.js +1 -0
  1579. package/dist-browser/chunks/CYzJaZmG.js +1 -0
  1580. package/dist-browser/chunks/CZng9q4s.js +1 -0
  1581. package/dist-browser/chunks/C_3LSlp_.js +1 -0
  1582. package/dist-browser/chunks/C_popvm5.js +1 -0
  1583. package/dist-browser/chunks/Ca2qCbBO.js +227 -0
  1584. package/dist-browser/chunks/CaayFmFc.js +68 -0
  1585. package/dist-browser/chunks/CagC9ufD.js +6 -0
  1586. package/dist-browser/chunks/CamHr2sm.js +9 -0
  1587. package/dist-browser/chunks/Caw9wDgF.js +1 -0
  1588. package/dist-browser/chunks/CbRyzWz3.js +1 -0
  1589. package/dist-browser/chunks/CcQz6dxG.js +68 -0
  1590. package/dist-browser/chunks/CcUHIKVc.js +1 -0
  1591. package/dist-browser/chunks/Cd20lYkt.js +23 -0
  1592. package/dist-browser/chunks/Cdj8C4sv.js +1 -0
  1593. package/dist-browser/chunks/CeWzMWwP.js +1 -0
  1594. package/dist-browser/chunks/Ceeo2sCz.js +1 -0
  1595. package/dist-browser/chunks/CerF2aP5.js +1 -0
  1596. package/dist-browser/chunks/Cew-kv76.js +1 -0
  1597. package/dist-browser/chunks/Cf1F89pD.js +1 -0
  1598. package/dist-browser/chunks/Cff8_5zr.js +1 -0
  1599. package/dist-browser/chunks/Cgy6G_V-.js +1 -0
  1600. package/dist-browser/chunks/ChAqhjhd.js +243 -0
  1601. package/dist-browser/chunks/Chg_Q8x6.js +1 -0
  1602. package/dist-browser/chunks/Chx9z6ee.js +3 -0
  1603. package/dist-browser/chunks/Ci0DiZOM.js +1 -0
  1604. package/dist-browser/chunks/CiD_XHlg.js +1 -0
  1605. package/dist-browser/chunks/CjL-uP84.js +1 -0
  1606. package/dist-browser/chunks/CjPBNVRF.js +2 -0
  1607. package/dist-browser/chunks/CjTILWD4.js +3 -0
  1608. package/dist-browser/chunks/CkmGh-87.js +1 -0
  1609. package/dist-browser/chunks/ClZqxSEX.js +1 -0
  1610. package/dist-browser/chunks/CluBrQDl.js +1 -0
  1611. package/dist-browser/chunks/Clzbw8hC.js +104 -0
  1612. package/dist-browser/chunks/CmEJbuVc.js +1 -0
  1613. package/dist-browser/chunks/CmlWyQpr.js +1 -0
  1614. package/dist-browser/chunks/Cnh5-qw-.js +10 -0
  1615. package/dist-browser/chunks/CnwbVRym.js +1 -0
  1616. package/dist-browser/chunks/Co55Z6b-.js +34 -0
  1617. package/dist-browser/chunks/CoqDcyee.js +1 -0
  1618. package/dist-browser/chunks/CorZBnkZ.js +71 -0
  1619. package/dist-browser/chunks/CpKf07f9.js +72 -0
  1620. package/dist-browser/chunks/CqXobSJH.js +82 -0
  1621. package/dist-browser/chunks/CqwcKTEN.js +1 -0
  1622. package/dist-browser/chunks/Cs23D-lk.js +18 -0
  1623. package/dist-browser/chunks/CsT20qOq.js +1 -0
  1624. package/dist-browser/chunks/CsTuUPUb.js +1 -0
  1625. package/dist-browser/chunks/CtCvKs-8.js +1 -0
  1626. package/dist-browser/chunks/CtpF73Mi.js +1 -0
  1627. package/dist-browser/chunks/CuHid4qh.js +1 -0
  1628. package/dist-browser/chunks/CuhwmTWw.js +2 -0
  1629. package/dist-browser/chunks/Cv31r4NA.js +1 -0
  1630. package/dist-browser/chunks/CvVTau-c.js +1 -0
  1631. package/dist-browser/chunks/Cvdyeg_0.js +1 -0
  1632. package/dist-browser/chunks/CvgsNxMb.js +1 -0
  1633. package/dist-browser/chunks/Cvk3fWJd.js +31 -0
  1634. package/dist-browser/chunks/Cvq_OonK.js +1 -0
  1635. package/dist-browser/chunks/Cvzg7xRz.js +1039 -0
  1636. package/dist-browser/chunks/CwPUhsCN.js +111 -0
  1637. package/dist-browser/chunks/CwTYnDSQ.js +1 -0
  1638. package/dist-browser/chunks/CwVb7sDh.js +1 -0
  1639. package/dist-browser/chunks/CwkwVzf9.js +1 -0
  1640. package/dist-browser/chunks/Cwsm87qt.js +1 -0
  1641. package/dist-browser/chunks/CwtYJaZ0.js +1 -0
  1642. package/dist-browser/chunks/CxBgnQIE.js +1 -0
  1643. package/dist-browser/chunks/CxRCGV_D.js +1 -0
  1644. package/dist-browser/chunks/CxW3h7EP.js +1 -0
  1645. package/dist-browser/chunks/CxdFFqFC.js +1 -0
  1646. package/dist-browser/chunks/Cxl6U4QM.js +1 -0
  1647. package/dist-browser/chunks/CxqqJceE.js +262 -0
  1648. package/dist-browser/chunks/CyUjhzls.js +1 -0
  1649. package/dist-browser/chunks/CzHZycAX.js +1 -0
  1650. package/dist-browser/chunks/CzVBHx3T.js +1 -0
  1651. package/dist-browser/chunks/D-J5r5vm.js +502 -0
  1652. package/dist-browser/chunks/D-ZRVGDk.js +1 -0
  1653. package/dist-browser/chunks/D10MTZ8f.js +1 -0
  1654. package/dist-browser/chunks/D1dFmEHc.js +82 -0
  1655. package/dist-browser/chunks/D2SJBO5U.js +1 -0
  1656. package/dist-browser/chunks/D2bDAUlP.js +1 -0
  1657. package/dist-browser/chunks/D2qpNyTi.js +1 -0
  1658. package/dist-browser/chunks/D3Fr6yvq.js +1 -0
  1659. package/dist-browser/chunks/D3_eaTYS.js +1 -0
  1660. package/dist-browser/chunks/D3lBoMMr.js +29 -0
  1661. package/dist-browser/chunks/D5CFWMVX.js +1 -0
  1662. package/dist-browser/chunks/D5Cj4ub7.js +1 -0
  1663. package/dist-browser/chunks/D5EJDMZ-.js +2 -0
  1664. package/dist-browser/chunks/D6E_gImS.js +1 -0
  1665. package/dist-browser/chunks/D6XXX9Ue.js +1 -0
  1666. package/dist-browser/chunks/D6fd1dZA.js +1 -0
  1667. package/dist-browser/chunks/D852BHwA.js +40 -0
  1668. package/dist-browser/chunks/D8inQ_yL.js +1 -0
  1669. package/dist-browser/chunks/D9XZ_4Ga.js +145 -0
  1670. package/dist-browser/chunks/D9dlo-Ln.js +1 -0
  1671. package/dist-browser/chunks/DAB0WqX0.js +1 -0
  1672. package/dist-browser/chunks/DAH2JXIW.js +1 -0
  1673. package/dist-browser/chunks/DAPFhXVb.js +22 -0
  1674. package/dist-browser/chunks/DAxE8pMD.js +45 -0
  1675. package/dist-browser/chunks/DBj6QGQs.js +1 -0
  1676. package/dist-browser/chunks/DC3L5U86.js +1 -0
  1677. package/dist-browser/chunks/DC9vc-0L.js +1 -0
  1678. package/dist-browser/chunks/DCJlJ3lv.js +1 -0
  1679. package/dist-browser/chunks/DCaQLeIq.js +1 -0
  1680. package/dist-browser/chunks/DCc-gTDg.js +1 -0
  1681. package/dist-browser/chunks/DD2V7Wxl.js +1 -0
  1682. package/dist-browser/chunks/DD6onItE.js +1 -0
  1683. package/dist-browser/chunks/DDLmvpjg.js +1 -0
  1684. package/dist-browser/chunks/DDRCiC_a.js +1 -0
  1685. package/dist-browser/chunks/DEW70SgN.js +1 -0
  1686. package/dist-browser/chunks/DEucxoKb.js +1 -0
  1687. package/dist-browser/chunks/DF6Qh6eu.js +1 -0
  1688. package/dist-browser/chunks/DFtj_qQf.js +63 -0
  1689. package/dist-browser/chunks/DG4h2xXm.js +45 -0
  1690. package/dist-browser/chunks/DGYxR7PN.js +26 -0
  1691. package/dist-browser/chunks/DGlba0EV.js +1 -0
  1692. package/dist-browser/chunks/DHOehIg0.js +30 -0
  1693. package/dist-browser/chunks/DHiTLWtz.js +1 -0
  1694. package/dist-browser/chunks/DIHxCXEJ.js +1 -0
  1695. package/dist-browser/chunks/DII2y8tL.js +546 -0
  1696. package/dist-browser/chunks/DIcTMzLD.js +31 -0
  1697. package/dist-browser/chunks/DImXrYb5.js +1 -0
  1698. package/dist-browser/chunks/DIvOsQJS.js +393 -0
  1699. package/dist-browser/chunks/DJCfJlBy.js +1 -0
  1700. package/dist-browser/chunks/DKnN7RH0.js +1 -0
  1701. package/dist-browser/chunks/DKrOx_1M.js +1 -0
  1702. package/dist-browser/chunks/DMcWzziy.js +1 -0
  1703. package/dist-browser/chunks/DMk6G0lv.js +1 -0
  1704. package/dist-browser/chunks/DMyNEYzI.js +1 -0
  1705. package/dist-browser/chunks/DN0xP1fa.js +1 -0
  1706. package/dist-browser/chunks/DNef-bWt.js +1 -0
  1707. package/dist-browser/chunks/DNhTxxCh.js +1 -0
  1708. package/dist-browser/chunks/DNoIqPE7.js +1 -0
  1709. package/dist-browser/chunks/DNsR67l1.js +3 -0
  1710. package/dist-browser/chunks/DOEmZHjx.js +1 -0
  1711. package/dist-browser/chunks/DOFYt5cj.js +1 -0
  1712. package/dist-browser/chunks/DOWMFTFl.js +38 -0
  1713. package/dist-browser/chunks/DOYycP3M.js +1 -0
  1714. package/dist-browser/chunks/DOidSPk5.js +1 -0
  1715. package/dist-browser/chunks/DOvE9vCY.js +97 -0
  1716. package/dist-browser/chunks/DOyIRes1.js +1 -0
  1717. package/dist-browser/chunks/DPIksCnG.js +41 -0
  1718. package/dist-browser/chunks/DPNgRv8u.js +1 -0
  1719. package/dist-browser/chunks/DPXctdFS.js +27 -0
  1720. package/dist-browser/chunks/DPnn0uIO.js +1 -0
  1721. package/dist-browser/chunks/DQ0A9BJI.js +1 -0
  1722. package/dist-browser/chunks/DQbqNpgw.js +1 -0
  1723. package/dist-browser/chunks/DQea7zxR.js +1 -0
  1724. package/dist-browser/chunks/DSMSQCrr.js +36 -0
  1725. package/dist-browser/chunks/DSp9shD_.js +1 -0
  1726. package/dist-browser/chunks/DT0rWxA4.js +1176 -0
  1727. package/dist-browser/chunks/DTtjHrtM.js +1 -0
  1728. package/dist-browser/chunks/DV53iZve.js +64 -0
  1729. package/dist-browser/chunks/DVAMQgZs.js +1 -0
  1730. package/dist-browser/chunks/DVcRBsZ0.js +69 -0
  1731. package/dist-browser/chunks/DVrViq4W.js +1 -0
  1732. package/dist-browser/chunks/DWe0PJKb.js +1 -0
  1733. package/dist-browser/chunks/DWgUahRJ.js +1 -0
  1734. package/dist-browser/chunks/DXJRs_pC.js +1 -0
  1735. package/dist-browser/chunks/DXq97sWO.js +1 -0
  1736. package/dist-browser/chunks/DXzwsPHQ.js +8 -0
  1737. package/dist-browser/chunks/DYoIHzIt.js +2 -0
  1738. package/dist-browser/chunks/DZJGj1NY.js +1 -0
  1739. package/dist-browser/chunks/DZYUBtK-.js +10 -0
  1740. package/dist-browser/chunks/DZmRZ_iP.js +1 -0
  1741. package/dist-browser/chunks/D_MQ9Xc9.js +1 -0
  1742. package/dist-browser/chunks/D_V_oqfi.js +1 -0
  1743. package/dist-browser/chunks/D_fJrOcA.js +1 -0
  1744. package/dist-browser/chunks/DaE8j1Mj.js +1 -0
  1745. package/dist-browser/chunks/DaNJDW05.js +120 -0
  1746. package/dist-browser/chunks/DaqOKjgV.js +2 -0
  1747. package/dist-browser/chunks/DbM1VGG0.js +1 -0
  1748. package/dist-browser/chunks/DbVolxbX.js +1 -0
  1749. package/dist-browser/chunks/Dd3Azzh1.js +102 -0
  1750. package/dist-browser/chunks/Dd_HZKyk.js +1 -0
  1751. package/dist-browser/chunks/DePrIwoT.js +1 -0
  1752. package/dist-browser/chunks/Df-3V4RI.js +1 -0
  1753. package/dist-browser/chunks/DfPCBWZC.js +35 -0
  1754. package/dist-browser/chunks/DfTjtDZE.js +1 -0
  1755. package/dist-browser/chunks/Dfdpy3ar.js +1 -0
  1756. package/dist-browser/chunks/DhQi6uM8.js +1 -0
  1757. package/dist-browser/chunks/Dhq0zrZC.js +131 -0
  1758. package/dist-browser/chunks/DhrQ_H4H.js +1 -0
  1759. package/dist-browser/chunks/Di27GzYt.js +1 -0
  1760. package/dist-browser/chunks/Di8-zyqt.js +1 -0
  1761. package/dist-browser/chunks/DifZdnzu.js +1 -0
  1762. package/dist-browser/chunks/DikvOXI-.js +1 -0
  1763. package/dist-browser/chunks/Dj3lr7h3.js +33 -0
  1764. package/dist-browser/chunks/Dj8ovMlo.js +1 -0
  1765. package/dist-browser/chunks/DjcMDPrm.js +67 -0
  1766. package/dist-browser/chunks/DkVVho_1.js +1 -0
  1767. package/dist-browser/chunks/Dkh1AfX5.js +1 -0
  1768. package/dist-browser/chunks/DkwGHqUD.js +1 -0
  1769. package/dist-browser/chunks/Dl96d5U7.js +1 -0
  1770. package/dist-browser/chunks/DlW29B4u.js +3 -0
  1771. package/dist-browser/chunks/DmSNe3jl.js +387 -0
  1772. package/dist-browser/chunks/DmxSxKXn.js +1 -0
  1773. package/dist-browser/chunks/DnFdLC2j.js +1 -0
  1774. package/dist-browser/chunks/DnUyDgmE.js +1 -0
  1775. package/dist-browser/chunks/DnvK0nWc.js +1 -0
  1776. package/dist-browser/chunks/DoEd4p-l.js +1 -0
  1777. package/dist-browser/chunks/DoX7pGYd.js +140 -0
  1778. package/dist-browser/chunks/Dp6fzsZG.js +1 -0
  1779. package/dist-browser/chunks/DpM23pTz.js +33 -0
  1780. package/dist-browser/chunks/DpZZtTTL.js +2 -0
  1781. package/dist-browser/chunks/DqAbaJTn.js +1 -0
  1782. package/dist-browser/chunks/DqMSA0q-.js +1 -0
  1783. package/dist-browser/chunks/DqNrCZSo.js +1 -0
  1784. package/dist-browser/chunks/DqP3aSvp.js +43 -0
  1785. package/dist-browser/chunks/Dqi6K18W.js +1 -0
  1786. package/dist-browser/chunks/DqqKpYoS.js +2 -0
  1787. package/dist-browser/chunks/Dqqmos-r.js +1 -0
  1788. package/dist-browser/chunks/Dr26QZ_C.js +1 -0
  1789. package/dist-browser/chunks/DrRp_OBG.js +1 -0
  1790. package/dist-browser/chunks/Ds0gQyON.js +1 -0
  1791. package/dist-browser/chunks/DsNI9SjT.js +1 -0
  1792. package/dist-browser/chunks/DskxWO57.js +1 -0
  1793. package/dist-browser/chunks/DspI2fym.js +33 -0
  1794. package/dist-browser/chunks/DtbRpC-a.js +2 -0
  1795. package/dist-browser/chunks/Dtc9u0hV.js +1 -0
  1796. package/dist-browser/chunks/DtdxxwYW.js +1 -0
  1797. package/dist-browser/chunks/Du2r_IDC.js +1 -0
  1798. package/dist-browser/chunks/DuiL5B5s.js +1 -0
  1799. package/dist-browser/chunks/DvMRww-v.js +1 -0
  1800. package/dist-browser/chunks/Dvzw_jou.js +1 -0
  1801. package/dist-browser/chunks/DwsXVYGF.js +1 -0
  1802. package/dist-browser/chunks/DxVZve2V.js +89 -0
  1803. package/dist-browser/chunks/Dy4Ev-pT.js +1 -0
  1804. package/dist-browser/chunks/DyGuOmo0.js +1 -0
  1805. package/dist-browser/chunks/DyXA-iwx.js +1 -0
  1806. package/dist-browser/chunks/Dypqlsev.js +1 -0
  1807. package/dist-browser/chunks/Dyqt3CuN.js +1 -0
  1808. package/dist-browser/chunks/DyxvzuFy.js +284 -0
  1809. package/dist-browser/chunks/DzMSiy_7.js +1 -0
  1810. package/dist-browser/chunks/DzaY1F1G.js +1 -0
  1811. package/dist-browser/chunks/EtRHumNJ.js +1 -0
  1812. package/dist-browser/chunks/FASUCRk-.js +3 -0
  1813. package/dist-browser/chunks/FeUl7sn8.js +1 -0
  1814. package/dist-browser/chunks/FjuaFAN8.js +25 -0
  1815. package/dist-browser/chunks/FsV9kMlK.js +1 -0
  1816. package/dist-browser/chunks/GB4zXBMC.js +1 -0
  1817. package/dist-browser/chunks/Guirowam.js +8 -0
  1818. package/dist-browser/chunks/HJHNBZzR.js +1 -0
  1819. package/dist-browser/chunks/HOXwa5Zi.js +1 -0
  1820. package/dist-browser/chunks/HhGGA2q1.js +1 -0
  1821. package/dist-browser/chunks/HjLsj9Wb.js +1 -0
  1822. package/dist-browser/chunks/ILniMPMQ.js +1 -0
  1823. package/dist-browser/chunks/IPgW5q-o.js +1 -0
  1824. package/dist-browser/chunks/IRJFdyYz.js +1 -0
  1825. package/dist-browser/chunks/J1EyHJSp.js +1 -0
  1826. package/dist-browser/chunks/JtVcQQeX.js +5 -0
  1827. package/dist-browser/chunks/KYZpoAyE.js +1 -0
  1828. package/dist-browser/chunks/KjHCb3-W.js +2 -0
  1829. package/dist-browser/chunks/Kp8JypHd.js +441 -0
  1830. package/dist-browser/chunks/Ku6I7UKh.js +1 -0
  1831. package/dist-browser/chunks/KzprlngN.js +1 -0
  1832. package/dist-browser/chunks/L5CwTQJI.js +4 -0
  1833. package/dist-browser/chunks/L9tCceA2.js +150 -0
  1834. package/dist-browser/chunks/L_tB79W_.js +1 -0
  1835. package/dist-browser/chunks/MDiJyUbk.js +1 -0
  1836. package/dist-browser/chunks/MaXgxQlM.js +1 -0
  1837. package/dist-browser/chunks/N5x7ZUws.js +1 -0
  1838. package/dist-browser/chunks/NZYk81nU.js +1 -0
  1839. package/dist-browser/chunks/Np7O_rbA.js +1 -0
  1840. package/dist-browser/chunks/Oo8Rc01u.js +1 -0
  1841. package/dist-browser/chunks/OtECxeEN.js +9 -0
  1842. package/dist-browser/chunks/OtOkABqS.js +158 -0
  1843. package/dist-browser/chunks/Oyc0qEPK.js +1 -0
  1844. package/dist-browser/chunks/PDPf8POY.js +1 -0
  1845. package/dist-browser/chunks/QRJE7tia.js +1 -0
  1846. package/dist-browser/chunks/Q_sagimg.js +1 -0
  1847. package/dist-browser/chunks/QgFqrot_.js +1 -0
  1848. package/dist-browser/chunks/QpPH2K9r.js +1 -0
  1849. package/dist-browser/chunks/R8vFmq4f.js +1 -0
  1850. package/dist-browser/chunks/RxUw8kPH.js +1 -0
  1851. package/dist-browser/chunks/SO6iJj34.js +1 -0
  1852. package/dist-browser/chunks/SWr9_u-k.js +13 -0
  1853. package/dist-browser/chunks/TQJJL2UK.js +27 -0
  1854. package/dist-browser/chunks/UE6Xi3ol.js +1 -0
  1855. package/dist-browser/chunks/VGXLiJ0S.js +1 -0
  1856. package/dist-browser/chunks/VMH7wDAk.js +1 -0
  1857. package/dist-browser/chunks/VwXcqbG4.js +23 -0
  1858. package/dist-browser/chunks/Wmd1pmNu.js +1 -0
  1859. package/dist-browser/chunks/XTdr3vkK.js +1 -0
  1860. package/dist-browser/chunks/XaLSS-X1.js +23 -0
  1861. package/dist-browser/chunks/XhPbWY7N.js +1 -0
  1862. package/dist-browser/chunks/Y4nknrnT.js +1 -0
  1863. package/dist-browser/chunks/Y9xF8jFn.js +23 -0
  1864. package/dist-browser/chunks/_-SUJuni.js +1 -0
  1865. package/dist-browser/chunks/_M7-qabf.js +101 -0
  1866. package/dist-browser/chunks/_qsNVwXW.js +1 -0
  1867. package/dist-browser/chunks/_vvwCLWQ.js +1 -0
  1868. package/dist-browser/chunks/b6V8XMYY.js +1 -0
  1869. package/dist-browser/chunks/bA3FB4mi.js +3 -0
  1870. package/dist-browser/chunks/bAf7cF9y.js +1 -0
  1871. package/dist-browser/chunks/bhrkTdEx.js +538 -0
  1872. package/dist-browser/chunks/dFGbvMHe.js +1 -0
  1873. package/dist-browser/chunks/dOIX3hJ7.js +1 -0
  1874. package/dist-browser/chunks/eUYPiZ2p.js +1 -0
  1875. package/dist-browser/chunks/eUiHGfWU.js +1 -0
  1876. package/dist-browser/chunks/f6_vnw-E.js +1 -0
  1877. package/dist-browser/chunks/fE2ZfJiX.js +1 -0
  1878. package/dist-browser/chunks/gZQtAM7h.js +2 -0
  1879. package/dist-browser/chunks/h8XD1xl-.js +1 -0
  1880. package/dist-browser/chunks/hEdm-zUW.js +1 -0
  1881. package/dist-browser/chunks/hWCYme74.js +1 -0
  1882. package/dist-browser/chunks/hfB064S0.js +1 -0
  1883. package/dist-browser/chunks/hlEBxUea.js +1 -0
  1884. package/dist-browser/chunks/j5sGo2Pt.js +1 -0
  1885. package/dist-browser/chunks/kG0ku-oF.js +1 -0
  1886. package/dist-browser/chunks/kLNROLfT.js +1 -0
  1887. package/dist-browser/chunks/kggDnku6.js +1 -0
  1888. package/dist-browser/chunks/klRtNUrN.js +1 -0
  1889. package/dist-browser/chunks/lOD1Gn8c.js +1 -0
  1890. package/dist-browser/chunks/lrh33Ko2.js +1 -0
  1891. package/dist-browser/chunks/mB6FoGFb.js +1 -0
  1892. package/dist-browser/chunks/msmucz6Z.js +1 -0
  1893. package/dist-browser/chunks/nEtJtbDE.js +1 -0
  1894. package/dist-browser/chunks/nvwS1LmH.js +1 -0
  1895. package/dist-browser/chunks/oqmnhzmi.js +2 -0
  1896. package/dist-browser/chunks/pICTBHHN.js +1 -0
  1897. package/dist-browser/chunks/pU4H1b3r.js +43 -0
  1898. package/dist-browser/chunks/qBpAlJSP.js +1 -0
  1899. package/dist-browser/chunks/qCjqID6v.js +1 -0
  1900. package/dist-browser/chunks/r-cfH8A5.js +1 -0
  1901. package/dist-browser/chunks/rgDalb_G.js +1 -0
  1902. package/dist-browser/chunks/rolldown-runtime-hePW80VL.js +1 -0
  1903. package/dist-browser/chunks/sdmDudQj.js +1 -0
  1904. package/dist-browser/chunks/shRf5cdU.js +1 -0
  1905. package/dist-browser/chunks/tvcsfh86.js +1 -0
  1906. package/dist-browser/chunks/tz7IArSg.js +1 -0
  1907. package/dist-browser/chunks/u--BrnjZ.js +1 -0
  1908. package/dist-browser/chunks/uBIymjUX.js +1 -0
  1909. package/dist-browser/chunks/uHO_HSNA.js +1 -0
  1910. package/dist-browser/chunks/uZz_bF7-.js +1 -0
  1911. package/dist-browser/chunks/uc0Y9KUA.js +1 -0
  1912. package/dist-browser/chunks/ud6upqGO.js +2 -0
  1913. package/dist-browser/chunks/udTuD3NU.js +1 -0
  1914. package/dist-browser/chunks/ul0Kb67V.js +38 -0
  1915. package/dist-browser/chunks/uq1wJ3hU.js +322 -0
  1916. package/dist-browser/chunks/vA_owFWw.js +1 -0
  1917. package/dist-browser/chunks/vgYSnL0k.js +1 -0
  1918. package/dist-browser/chunks/vjQO9b4G.js +1 -0
  1919. package/dist-browser/chunks/vm1kntVK.js +18 -0
  1920. package/dist-browser/chunks/vnMr9U1p.js +1 -0
  1921. package/dist-browser/chunks/vyik5ymL.js +1 -0
  1922. package/dist-browser/chunks/w2RB3fs9.js +1 -0
  1923. package/dist-browser/chunks/wmdxOiEL.js +1 -0
  1924. package/dist-browser/chunks/xtpWQ17d.js +27 -0
  1925. package/dist-browser/chunks/yRMgu4ay.js +3 -0
  1926. package/dist-browser/chunks/yYrq3lUc.js +42 -0
  1927. package/dist-browser/chunks/yieoIIce.js +1 -0
  1928. package/dist-browser/chunks/yzr1keSX.js +38 -0
  1929. package/dist-browser/chunks/z94mqM9o.js +1 -0
  1930. package/dist-browser/chunks/zSWKwMId.js +1 -0
  1931. package/dist-browser/importmap.json +1761 -0
  1932. package/dist-browser/koota/react.js +1 -0
  1933. package/dist-browser/koota.js +1 -0
  1934. package/dist-browser/postprocessing.js +1 -0
  1935. package/dist-browser/react/jsx-runtime.js +1 -0
  1936. package/dist-browser/react-dom/client.js +1 -0
  1937. package/dist-browser/react-dom.js +1 -0
  1938. package/dist-browser/react.js +1 -0
  1939. package/dist-browser/release.json +11655 -0
  1940. package/dist-browser/three/addons/Addons.js +1 -0
  1941. package/dist-browser/three/addons/animation/AnimationClipCreator.js +1 -0
  1942. package/dist-browser/three/addons/animation/CCDIKSolver.js +1 -0
  1943. package/dist-browser/three/addons/capabilities/WebGL.js +1 -0
  1944. package/dist-browser/three/addons/capabilities/WebGPU.js +1 -0
  1945. package/dist-browser/three/addons/controls/ArcballControls.js +1 -0
  1946. package/dist-browser/three/addons/controls/DragControls.js +1 -0
  1947. package/dist-browser/three/addons/controls/FirstPersonControls.js +1 -0
  1948. package/dist-browser/three/addons/controls/FlyControls.js +1 -0
  1949. package/dist-browser/three/addons/controls/MapControls.js +1 -0
  1950. package/dist-browser/three/addons/controls/OrbitControls.js +1 -0
  1951. package/dist-browser/three/addons/controls/PointerLockControls.js +1 -0
  1952. package/dist-browser/three/addons/controls/TrackballControls.js +1 -0
  1953. package/dist-browser/three/addons/controls/TransformControls.js +1 -0
  1954. package/dist-browser/three/addons/csm/CSM.js +1 -0
  1955. package/dist-browser/three/addons/csm/CSMFrustum.js +1 -0
  1956. package/dist-browser/three/addons/csm/CSMHelper.js +1 -0
  1957. package/dist-browser/three/addons/csm/CSMShader.js +1 -0
  1958. package/dist-browser/three/addons/csm/CSMShadowNode.js +1 -0
  1959. package/dist-browser/three/addons/curves/CurveExtras.js +1 -0
  1960. package/dist-browser/three/addons/curves/NURBSCurve.js +1 -0
  1961. package/dist-browser/three/addons/curves/NURBSSurface.js +1 -0
  1962. package/dist-browser/three/addons/curves/NURBSUtils.js +1 -0
  1963. package/dist-browser/three/addons/curves/NURBSVolume.js +1 -0
  1964. package/dist-browser/three/addons/effects/AnaglyphEffect.js +1 -0
  1965. package/dist-browser/three/addons/effects/AsciiEffect.js +1 -0
  1966. package/dist-browser/three/addons/effects/OutlineEffect.js +1 -0
  1967. package/dist-browser/three/addons/effects/ParallaxBarrierEffect.js +1 -0
  1968. package/dist-browser/three/addons/effects/StereoEffect.js +1 -0
  1969. package/dist-browser/three/addons/environments/ColorEnvironment.js +1 -0
  1970. package/dist-browser/three/addons/environments/DebugEnvironment.js +1 -0
  1971. package/dist-browser/three/addons/environments/RoomEnvironment.js +1 -0
  1972. package/dist-browser/three/addons/exporters/DRACOExporter.js +1 -0
  1973. package/dist-browser/three/addons/exporters/EXRExporter.js +1 -0
  1974. package/dist-browser/three/addons/exporters/GLTFExporter.js +1 -0
  1975. package/dist-browser/three/addons/exporters/KTX2Exporter.js +1 -0
  1976. package/dist-browser/three/addons/exporters/OBJExporter.js +1 -0
  1977. package/dist-browser/three/addons/exporters/PLYExporter.js +1 -0
  1978. package/dist-browser/three/addons/exporters/STLExporter.js +1 -0
  1979. package/dist-browser/three/addons/exporters/USDZExporter.js +1 -0
  1980. package/dist-browser/three/addons/generators/CityGenerator.js +1 -0
  1981. package/dist-browser/three/addons/generators/ForestGenerator.js +1 -0
  1982. package/dist-browser/three/addons/generators/TerrainGenerator.js +1 -0
  1983. package/dist-browser/three/addons/generators/TreeGenerator.js +1 -0
  1984. package/dist-browser/three/addons/generators/city/BenchGenerator.js +1 -0
  1985. package/dist-browser/three/addons/generators/city/CarGenerator.js +1 -0
  1986. package/dist-browser/three/addons/generators/city/CityGeneratorUtils.js +1 -0
  1987. package/dist-browser/three/addons/generators/city/HydrantGenerator.js +1 -0
  1988. package/dist-browser/three/addons/generators/city/InstancedMeshGenerator.js +1 -0
  1989. package/dist-browser/three/addons/generators/city/PersonGenerator.js +1 -0
  1990. package/dist-browser/three/addons/generators/city/SidewalkGenerator.js +1 -0
  1991. package/dist-browser/three/addons/generators/city/SkyscraperGenerator.js +1 -0
  1992. package/dist-browser/three/addons/generators/city/StreetTreeGenerator.js +1 -0
  1993. package/dist-browser/three/addons/generators/city/StreetlightGenerator.js +1 -0
  1994. package/dist-browser/three/addons/generators/city/TrafficlightGenerator.js +1 -0
  1995. package/dist-browser/three/addons/generators/city/TrashcanGenerator.js +1 -0
  1996. package/dist-browser/three/addons/geometries/BoxLineGeometry.js +1 -0
  1997. package/dist-browser/three/addons/geometries/ConvexGeometry.js +1 -0
  1998. package/dist-browser/three/addons/geometries/DecalGeometry.js +1 -0
  1999. package/dist-browser/three/addons/geometries/LoftGeometry.js +1 -0
  2000. package/dist-browser/three/addons/geometries/ParametricFunctions.js +1 -0
  2001. package/dist-browser/three/addons/geometries/ParametricGeometry.js +1 -0
  2002. package/dist-browser/three/addons/geometries/RoundedBoxGeometry.js +1 -0
  2003. package/dist-browser/three/addons/geometries/TeapotGeometry.js +1 -0
  2004. package/dist-browser/three/addons/geometries/TextGeometry.js +1 -0
  2005. package/dist-browser/three/addons/gpgpu/BitonicSort.js +1 -0
  2006. package/dist-browser/three/addons/gpgpu/CountingSort.js +1 -0
  2007. package/dist-browser/three/addons/helpers/AnimationPathHelper.js +1 -0
  2008. package/dist-browser/three/addons/helpers/LightProbeGridHelper.js +1 -0
  2009. package/dist-browser/three/addons/helpers/LightProbeGridHelperWebGL.js +80 -0
  2010. package/dist-browser/three/addons/helpers/LightProbeHelper.js +1 -0
  2011. package/dist-browser/three/addons/helpers/LightProbeHelperGPU.js +1 -0
  2012. package/dist-browser/three/addons/helpers/OctreeHelper.js +1 -0
  2013. package/dist-browser/three/addons/helpers/PositionalAudioHelper.js +1 -0
  2014. package/dist-browser/three/addons/helpers/RapierHelper.js +1 -0
  2015. package/dist-browser/three/addons/helpers/RectAreaLightHelper.js +1 -0
  2016. package/dist-browser/three/addons/helpers/TextureHelper.js +1 -0
  2017. package/dist-browser/three/addons/helpers/TextureHelperGPU.js +1 -0
  2018. package/dist-browser/three/addons/helpers/VertexNormalsHelper.js +1 -0
  2019. package/dist-browser/three/addons/helpers/VertexTangentsHelper.js +1 -0
  2020. package/dist-browser/three/addons/helpers/ViewHelper.js +1 -0
  2021. package/dist-browser/three/addons/inspector/Extension.js +1 -0
  2022. package/dist-browser/three/addons/inspector/Inspector.js +1 -0
  2023. package/dist-browser/three/addons/inspector/RendererInspector.js +1 -0
  2024. package/dist-browser/three/addons/inspector/extensions/color-grading/ColorGrading.js +1 -0
  2025. package/dist-browser/three/addons/inspector/extensions/color-grading/ColorWheel.js +1 -0
  2026. package/dist-browser/three/addons/inspector/extensions/color-grading/CurveEditor.js +1 -0
  2027. package/dist-browser/three/addons/inspector/extensions/color-grading/LUT3DStyle.js +1 -0
  2028. package/dist-browser/three/addons/inspector/extensions/color-grading/LUTMath.js +1 -0
  2029. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/BrightnessModule.js +1 -0
  2030. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ColorWheelModule.js +1 -0
  2031. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ContrastModule.js +1 -0
  2032. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/CurvesModule.js +1 -0
  2033. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ExposureHueModule.js +1 -0
  2034. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ExposureModule.js +1 -0
  2035. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/HueModule.js +1 -0
  2036. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/ImportedCubeModule.js +1 -0
  2037. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/Module.js +1 -0
  2038. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/OutputModule.js +1 -0
  2039. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/RendererModule.js +1 -0
  2040. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/SatVibranceModule.js +1 -0
  2041. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/SaturationModule.js +1 -0
  2042. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/VibranceModule.js +1 -0
  2043. package/dist-browser/three/addons/inspector/extensions/color-grading/modules/WhiteBalanceModule.js +1 -0
  2044. package/dist-browser/three/addons/inspector/extensions/tsl-graph/TSLGraphEditor.js +1 -0
  2045. package/dist-browser/three/addons/inspector/extensions/tsl-graph/TSLGraphLoader.js +1 -0
  2046. package/dist-browser/three/addons/inspector/tabs/Console.js +1 -0
  2047. package/dist-browser/three/addons/inspector/tabs/Memory.js +1 -0
  2048. package/dist-browser/three/addons/inspector/tabs/Parameters.js +1 -0
  2049. package/dist-browser/three/addons/inspector/tabs/Performance.js +1 -0
  2050. package/dist-browser/three/addons/inspector/tabs/Settings.js +1 -0
  2051. package/dist-browser/three/addons/inspector/tabs/Timeline.js +1 -0
  2052. package/dist-browser/three/addons/inspector/tabs/Viewer.js +1 -0
  2053. package/dist-browser/three/addons/inspector/ui/Graph.js +1 -0
  2054. package/dist-browser/three/addons/inspector/ui/Item.js +1 -0
  2055. package/dist-browser/three/addons/inspector/ui/List.js +1 -0
  2056. package/dist-browser/three/addons/inspector/ui/Profiler.js +1 -0
  2057. package/dist-browser/three/addons/inspector/ui/Style.js +1 -0
  2058. package/dist-browser/three/addons/inspector/ui/Tab.js +1 -0
  2059. package/dist-browser/three/addons/inspector/ui/Values.js +1 -0
  2060. package/dist-browser/three/addons/inspector/ui/utils.js +1 -0
  2061. package/dist-browser/three/addons/interaction/InteractionManager.js +1 -0
  2062. package/dist-browser/three/addons/interactive/HTMLMesh.js +1 -0
  2063. package/dist-browser/three/addons/interactive/InteractiveGroup.js +1 -0
  2064. package/dist-browser/three/addons/interactive/SelectionBox.js +1 -0
  2065. package/dist-browser/three/addons/interactive/SelectionHelper.js +1 -0
  2066. package/dist-browser/three/addons/libs/chevrotain.module.min.js +1 -0
  2067. package/dist-browser/three/addons/libs/demuxer_mp4.js +1 -0
  2068. package/dist-browser/three/addons/libs/fflate.module.js +1 -0
  2069. package/dist-browser/three/addons/libs/ktx-parse.module.js +1 -0
  2070. package/dist-browser/three/addons/libs/lil-gui.module.min.js +4 -0
  2071. package/dist-browser/three/addons/libs/meshopt_clusterizer.module.js +1 -0
  2072. package/dist-browser/three/addons/libs/meshopt_decoder.module.js +1 -0
  2073. package/dist-browser/three/addons/libs/meshopt_simplifier.module.js +1 -0
  2074. package/dist-browser/three/addons/libs/mikktspace.module.js +1 -0
  2075. package/dist-browser/three/addons/libs/motion-controllers.module.js +1 -0
  2076. package/dist-browser/three/addons/libs/potpack.module.js +1 -0
  2077. package/dist-browser/three/addons/libs/stats.module.js +1 -0
  2078. package/dist-browser/three/addons/libs/surfaceNet.js +1 -0
  2079. package/dist-browser/three/addons/libs/tween.module.js +1 -0
  2080. package/dist-browser/three/addons/libs/utif.module.js +1 -0
  2081. package/dist-browser/three/addons/libs/zstddec.module.js +1 -0
  2082. package/dist-browser/three/addons/lighting/ClusteredLighting.js +1 -0
  2083. package/dist-browser/three/addons/lighting/DynamicLighting.js +1 -0
  2084. package/dist-browser/three/addons/lighting/LightProbeGrid.js +1 -0
  2085. package/dist-browser/three/addons/lighting/LightProbeGridUtils.js +1 -0
  2086. package/dist-browser/three/addons/lighting/LightProbeGridWebGL.js +135 -0
  2087. package/dist-browser/three/addons/lighting/vxgi/VXGIConeTracer.js +1 -0
  2088. package/dist-browser/three/addons/lighting/vxgi/VXGINode.js +1 -0
  2089. package/dist-browser/three/addons/lighting/vxgi/VXGISceneCollector.js +1 -0
  2090. package/dist-browser/three/addons/lighting/vxgi/VXGIVolume.js +1 -0
  2091. package/dist-browser/three/addons/lights/LightProbeGenerator.js +1 -0
  2092. package/dist-browser/three/addons/lights/RectAreaLightTexturesLib.js +1 -0
  2093. package/dist-browser/three/addons/lights/RectAreaLightUniformsLib.js +1 -0
  2094. package/dist-browser/three/addons/lights/SunLight.js +1 -0
  2095. package/dist-browser/three/addons/lights/SunLightNode.js +1 -0
  2096. package/dist-browser/three/addons/lights/SunLightShadow.js +1 -0
  2097. package/dist-browser/three/addons/lights/SunShadowNode.js +1 -0
  2098. package/dist-browser/three/addons/lines/Line2.js +1 -0
  2099. package/dist-browser/three/addons/lines/LineGeometry.js +1 -0
  2100. package/dist-browser/three/addons/lines/LineMaterial.js +1 -0
  2101. package/dist-browser/three/addons/lines/LineSegments2.js +1 -0
  2102. package/dist-browser/three/addons/lines/LineSegmentsGeometry.js +1 -0
  2103. package/dist-browser/three/addons/lines/Wireframe.js +1 -0
  2104. package/dist-browser/three/addons/lines/WireframeGeometry2.js +1 -0
  2105. package/dist-browser/three/addons/lines/webgpu/Line2.js +1 -0
  2106. package/dist-browser/three/addons/lines/webgpu/LineSegments2.js +1 -0
  2107. package/dist-browser/three/addons/lines/webgpu/Wireframe.js +1 -0
  2108. package/dist-browser/three/addons/loaders/3DMLoader.js +1 -0
  2109. package/dist-browser/three/addons/loaders/3MFLoader.js +1 -0
  2110. package/dist-browser/three/addons/loaders/AMFLoader.js +1 -0
  2111. package/dist-browser/three/addons/loaders/BVHLoader.js +1 -0
  2112. package/dist-browser/three/addons/loaders/ColladaLoader.js +1 -0
  2113. package/dist-browser/three/addons/loaders/DDSLoader.js +1 -0
  2114. package/dist-browser/three/addons/loaders/DRACOLoader.js +1 -0
  2115. package/dist-browser/three/addons/loaders/EXRLoader.js +1 -0
  2116. package/dist-browser/three/addons/loaders/FBXLoader.js +1 -0
  2117. package/dist-browser/three/addons/loaders/FontLoader.js +1 -0
  2118. package/dist-browser/three/addons/loaders/GCodeLoader.js +1 -0
  2119. package/dist-browser/three/addons/loaders/GLTFGaussianSplatLoaderExtension.js +1 -0
  2120. package/dist-browser/three/addons/loaders/GLTFLoader.js +1 -0
  2121. package/dist-browser/three/addons/loaders/GaussianSplatPLYLoader.js +1 -0
  2122. package/dist-browser/three/addons/loaders/HDRCubeTextureLoader.js +1 -0
  2123. package/dist-browser/three/addons/loaders/HDRLoader.js +1 -0
  2124. package/dist-browser/three/addons/loaders/IESLoader.js +1 -0
  2125. package/dist-browser/three/addons/loaders/KMZLoader.js +1 -0
  2126. package/dist-browser/three/addons/loaders/KSPLATLoader.js +1 -0
  2127. package/dist-browser/three/addons/loaders/KTX2Loader.js +1 -0
  2128. package/dist-browser/three/addons/loaders/KTXLoader.js +1 -0
  2129. package/dist-browser/three/addons/loaders/LDrawLoader.js +1 -0
  2130. package/dist-browser/three/addons/loaders/LUT3dlLoader.js +1 -0
  2131. package/dist-browser/three/addons/loaders/LUTCubeLoader.js +1 -0
  2132. package/dist-browser/three/addons/loaders/LUTImageLoader.js +1 -0
  2133. package/dist-browser/three/addons/loaders/LWOLoader.js +1 -0
  2134. package/dist-browser/three/addons/loaders/MD2Loader.js +1 -0
  2135. package/dist-browser/three/addons/loaders/MDDLoader.js +1 -0
  2136. package/dist-browser/three/addons/loaders/MTLLoader.js +1 -0
  2137. package/dist-browser/three/addons/loaders/MaterialXLoader.js +1 -0
  2138. package/dist-browser/three/addons/loaders/NRRDLoader.js +1 -0
  2139. package/dist-browser/three/addons/loaders/OBJLoader.js +1 -0
  2140. package/dist-browser/three/addons/loaders/PCDLoader.js +1 -0
  2141. package/dist-browser/three/addons/loaders/PDBLoader.js +1 -0
  2142. package/dist-browser/three/addons/loaders/PLYLoader.js +1 -0
  2143. package/dist-browser/three/addons/loaders/PVRLoader.js +1 -0
  2144. package/dist-browser/three/addons/loaders/RGBELoader.js +1 -0
  2145. package/dist-browser/three/addons/loaders/SPLATLoader.js +1 -0
  2146. package/dist-browser/three/addons/loaders/SPZLoader.js +1 -0
  2147. package/dist-browser/three/addons/loaders/STLLoader.js +1 -0
  2148. package/dist-browser/three/addons/loaders/SVGLoader.js +1 -0
  2149. package/dist-browser/three/addons/loaders/TDSLoader.js +1 -0
  2150. package/dist-browser/three/addons/loaders/TGALoader.js +1 -0
  2151. package/dist-browser/three/addons/loaders/TIFFLoader.js +1 -0
  2152. package/dist-browser/three/addons/loaders/TTFLoader.js +1 -0
  2153. package/dist-browser/three/addons/loaders/USDLoader.js +1 -0
  2154. package/dist-browser/three/addons/loaders/USDZLoader.js +1 -0
  2155. package/dist-browser/three/addons/loaders/UltraHDRLoader.js +1 -0
  2156. package/dist-browser/three/addons/loaders/VOXLoader.js +1 -0
  2157. package/dist-browser/three/addons/loaders/VRMLLoader.js +1 -0
  2158. package/dist-browser/three/addons/loaders/VTKLoader.js +1 -0
  2159. package/dist-browser/three/addons/loaders/XYZLoader.js +1 -0
  2160. package/dist-browser/three/addons/loaders/collada/ColladaComposer.js +1 -0
  2161. package/dist-browser/three/addons/loaders/collada/ColladaParser.js +1 -0
  2162. package/dist-browser/three/addons/loaders/lwo/IFFParser.js +1 -0
  2163. package/dist-browser/three/addons/loaders/lwo/LWO2Parser.js +1 -0
  2164. package/dist-browser/three/addons/loaders/lwo/LWO3Parser.js +1 -0
  2165. package/dist-browser/three/addons/loaders/materialx/MaterialXArchive.js +1 -0
  2166. package/dist-browser/three/addons/loaders/materialx/MaterialXDocument.js +1 -0
  2167. package/dist-browser/three/addons/loaders/materialx/MaterialXHextile.js +1 -0
  2168. package/dist-browser/three/addons/loaders/materialx/MaterialXInterfaceValidation.js +1 -0
  2169. package/dist-browser/three/addons/loaders/materialx/MaterialXLog.js +1 -0
  2170. package/dist-browser/three/addons/loaders/materialx/MaterialXNodeInterfaceRegistry.js +1 -0
  2171. package/dist-browser/three/addons/loaders/materialx/MaterialXNodeLibrary.js +1 -0
  2172. package/dist-browser/three/addons/loaders/materialx/MaterialXSurfaceMappings.js +1 -0
  2173. package/dist-browser/three/addons/loaders/materialx/MaterialXUtils.js +1 -0
  2174. package/dist-browser/three/addons/loaders/materialx/compile/MaterialXCompileRegistry.js +1 -0
  2175. package/dist-browser/three/addons/loaders/materialx/parse/MaterialXParser.js +1 -0
  2176. package/dist-browser/three/addons/loaders/usd/USDAParser.js +1 -0
  2177. package/dist-browser/three/addons/loaders/usd/USDCParser.js +1 -0
  2178. package/dist-browser/three/addons/loaders/usd/USDComposer.js +1 -0
  2179. package/dist-browser/three/addons/materials/LDrawConditionalLineMaterial.js +1 -0
  2180. package/dist-browser/three/addons/materials/LDrawConditionalLineNodeMaterial.js +1 -0
  2181. package/dist-browser/three/addons/materials/WoodNodeMaterial.js +42 -0
  2182. package/dist-browser/three/addons/math/Capsule.js +1 -0
  2183. package/dist-browser/three/addons/math/ColorConverter.js +1 -0
  2184. package/dist-browser/three/addons/math/ColorSpaces.js +1 -0
  2185. package/dist-browser/three/addons/math/ConvexHull.js +1 -0
  2186. package/dist-browser/three/addons/math/ImprovedNoise.js +1 -0
  2187. package/dist-browser/three/addons/math/Lut.js +1 -0
  2188. package/dist-browser/three/addons/math/MeshSurfaceSampler.js +1 -0
  2189. package/dist-browser/three/addons/math/OBB.js +1 -0
  2190. package/dist-browser/three/addons/math/Octree.js +1 -0
  2191. package/dist-browser/three/addons/math/SimplexNoise.js +1 -0
  2192. package/dist-browser/three/addons/misc/ConvexObjectBreaker.js +1 -0
  2193. package/dist-browser/three/addons/misc/GPUComputationRenderer.js +1 -0
  2194. package/dist-browser/three/addons/misc/Gyroscope.js +1 -0
  2195. package/dist-browser/three/addons/misc/MD2Character.js +1 -0
  2196. package/dist-browser/three/addons/misc/MD2CharacterComplex.js +1 -0
  2197. package/dist-browser/three/addons/misc/MorphAnimMesh.js +1 -0
  2198. package/dist-browser/three/addons/misc/MorphBlendMesh.js +1 -0
  2199. package/dist-browser/three/addons/misc/ProgressiveLightMap.js +1 -0
  2200. package/dist-browser/three/addons/misc/ProgressiveLightMapGPU.js +1 -0
  2201. package/dist-browser/three/addons/misc/RollerCoaster.js +1 -0
  2202. package/dist-browser/three/addons/misc/Sculptor.js +1 -0
  2203. package/dist-browser/three/addons/misc/SculptorMesh.js +1 -0
  2204. package/dist-browser/three/addons/misc/SculptorTools.js +1 -0
  2205. package/dist-browser/three/addons/misc/SculptorUtils.js +1 -0
  2206. package/dist-browser/three/addons/misc/TileCreasedNormalsPlugin.js +1 -0
  2207. package/dist-browser/three/addons/misc/TubePainter.js +1 -0
  2208. package/dist-browser/three/addons/misc/Volume.js +1 -0
  2209. package/dist-browser/three/addons/misc/VolumeSlice.js +1 -0
  2210. package/dist-browser/three/addons/modifiers/CurveModifier.js +1 -0
  2211. package/dist-browser/three/addons/modifiers/CurveModifierGPU.js +1 -0
  2212. package/dist-browser/three/addons/modifiers/EdgeSplitModifier.js +1 -0
  2213. package/dist-browser/three/addons/modifiers/SimplifyModifier.js +1 -0
  2214. package/dist-browser/three/addons/modifiers/TessellateModifier.js +1 -0
  2215. package/dist-browser/three/addons/objects/GaussianSplat.js +1 -0
  2216. package/dist-browser/three/addons/objects/GroundedSkybox.js +1 -0
  2217. package/dist-browser/three/addons/objects/Lensflare.js +1 -0
  2218. package/dist-browser/three/addons/objects/LensflareMesh.js +1 -0
  2219. package/dist-browser/three/addons/objects/MarchingCubes.js +1 -0
  2220. package/dist-browser/three/addons/objects/Reflector.js +1 -0
  2221. package/dist-browser/three/addons/objects/ReflectorForSSRPass.js +1 -0
  2222. package/dist-browser/three/addons/objects/Refractor.js +1 -0
  2223. package/dist-browser/three/addons/objects/ShadowMesh.js +1 -0
  2224. package/dist-browser/three/addons/objects/Sky.js +1 -0
  2225. package/dist-browser/three/addons/objects/SkyMesh.js +1 -0
  2226. package/dist-browser/three/addons/objects/Water.js +1 -0
  2227. package/dist-browser/three/addons/objects/Water2.js +1 -0
  2228. package/dist-browser/three/addons/objects/Water2Mesh.js +1 -0
  2229. package/dist-browser/three/addons/objects/WaterMesh.js +1 -0
  2230. package/dist-browser/three/addons/offscreen/jank.js +1 -0
  2231. package/dist-browser/three/addons/offscreen/offscreen.js +0 -0
  2232. package/dist-browser/three/addons/offscreen/scene.js +1 -0
  2233. package/dist-browser/three/addons/physics/AmmoPhysics.js +1 -0
  2234. package/dist-browser/three/addons/physics/JoltPhysics.js +1 -0
  2235. package/dist-browser/three/addons/physics/RapierPhysics.js +1 -0
  2236. package/dist-browser/three/addons/postprocessing/AfterimagePass.js +1 -0
  2237. package/dist-browser/three/addons/postprocessing/BloomPass.js +1 -0
  2238. package/dist-browser/three/addons/postprocessing/BokehPass.js +1 -0
  2239. package/dist-browser/three/addons/postprocessing/ClearPass.js +1 -0
  2240. package/dist-browser/three/addons/postprocessing/CubeTexturePass.js +1 -0
  2241. package/dist-browser/three/addons/postprocessing/DotScreenPass.js +1 -0
  2242. package/dist-browser/three/addons/postprocessing/EffectComposer.js +1 -0
  2243. package/dist-browser/three/addons/postprocessing/FXAAPass.js +1 -0
  2244. package/dist-browser/three/addons/postprocessing/FilmPass.js +1 -0
  2245. package/dist-browser/three/addons/postprocessing/GTAOPass.js +1 -0
  2246. package/dist-browser/three/addons/postprocessing/GlitchPass.js +1 -0
  2247. package/dist-browser/three/addons/postprocessing/HalftonePass.js +1 -0
  2248. package/dist-browser/three/addons/postprocessing/LUTPass.js +1 -0
  2249. package/dist-browser/three/addons/postprocessing/MaskPass.js +1 -0
  2250. package/dist-browser/three/addons/postprocessing/OutlinePass.js +1 -0
  2251. package/dist-browser/three/addons/postprocessing/OutputPass.js +1 -0
  2252. package/dist-browser/three/addons/postprocessing/Pass.js +1 -0
  2253. package/dist-browser/three/addons/postprocessing/RenderPass.js +1 -0
  2254. package/dist-browser/three/addons/postprocessing/RenderPixelatedPass.js +1 -0
  2255. package/dist-browser/three/addons/postprocessing/RenderTransitionPass.js +1 -0
  2256. package/dist-browser/three/addons/postprocessing/SAOPass.js +1 -0
  2257. package/dist-browser/three/addons/postprocessing/SMAAPass.js +1 -0
  2258. package/dist-browser/three/addons/postprocessing/SSAARenderPass.js +1 -0
  2259. package/dist-browser/three/addons/postprocessing/SSAOPass.js +1 -0
  2260. package/dist-browser/three/addons/postprocessing/SSRPass.js +1 -0
  2261. package/dist-browser/three/addons/postprocessing/SavePass.js +1 -0
  2262. package/dist-browser/three/addons/postprocessing/ShaderPass.js +1 -0
  2263. package/dist-browser/three/addons/postprocessing/TAARenderPass.js +1 -0
  2264. package/dist-browser/three/addons/postprocessing/TexturePass.js +1 -0
  2265. package/dist-browser/three/addons/postprocessing/UnrealBloomPass.js +1 -0
  2266. package/dist-browser/three/addons/renderers/CSS2DRenderer.js +1 -0
  2267. package/dist-browser/three/addons/renderers/CSS3DRenderer.js +1 -0
  2268. package/dist-browser/three/addons/renderers/Projector.js +1 -0
  2269. package/dist-browser/three/addons/renderers/SVGRenderer.js +1 -0
  2270. package/dist-browser/three/addons/shaders/ACESFilmicToneMappingShader.js +1 -0
  2271. package/dist-browser/three/addons/shaders/AfterimageShader.js +1 -0
  2272. package/dist-browser/three/addons/shaders/BasicShader.js +1 -0
  2273. package/dist-browser/three/addons/shaders/BleachBypassShader.js +1 -0
  2274. package/dist-browser/three/addons/shaders/BlendShader.js +1 -0
  2275. package/dist-browser/three/addons/shaders/BokehShader.js +1 -0
  2276. package/dist-browser/three/addons/shaders/BokehShader2.js +1 -0
  2277. package/dist-browser/three/addons/shaders/BrightnessContrastShader.js +1 -0
  2278. package/dist-browser/three/addons/shaders/ColorCorrectionShader.js +1 -0
  2279. package/dist-browser/three/addons/shaders/ColorifyShader.js +1 -0
  2280. package/dist-browser/three/addons/shaders/ConvolutionShader.js +1 -0
  2281. package/dist-browser/three/addons/shaders/CopyShader.js +1 -0
  2282. package/dist-browser/three/addons/shaders/DOFMipMapShader.js +1 -0
  2283. package/dist-browser/three/addons/shaders/DepthLimitedBlurShader.js +1 -0
  2284. package/dist-browser/three/addons/shaders/DigitalGlitch.js +1 -0
  2285. package/dist-browser/three/addons/shaders/DotScreenShader.js +1 -0
  2286. package/dist-browser/three/addons/shaders/ExposureShader.js +1 -0
  2287. package/dist-browser/three/addons/shaders/FXAAShader.js +1 -0
  2288. package/dist-browser/three/addons/shaders/FilmShader.js +1 -0
  2289. package/dist-browser/three/addons/shaders/FocusShader.js +1 -0
  2290. package/dist-browser/three/addons/shaders/FreiChenShader.js +1 -0
  2291. package/dist-browser/three/addons/shaders/GTAOShader.js +1 -0
  2292. package/dist-browser/three/addons/shaders/GammaCorrectionShader.js +1 -0
  2293. package/dist-browser/three/addons/shaders/HalftoneShader.js +1 -0
  2294. package/dist-browser/three/addons/shaders/HorizontalBlurShader.js +1 -0
  2295. package/dist-browser/three/addons/shaders/HorizontalTiltShiftShader.js +1 -0
  2296. package/dist-browser/three/addons/shaders/HueSaturationShader.js +1 -0
  2297. package/dist-browser/three/addons/shaders/KaleidoShader.js +1 -0
  2298. package/dist-browser/three/addons/shaders/LuminosityHighPassShader.js +1 -0
  2299. package/dist-browser/three/addons/shaders/LuminosityShader.js +1 -0
  2300. package/dist-browser/three/addons/shaders/MirrorShader.js +1 -0
  2301. package/dist-browser/three/addons/shaders/NormalMapShader.js +1 -0
  2302. package/dist-browser/three/addons/shaders/OutputShader.js +1 -0
  2303. package/dist-browser/three/addons/shaders/PoissonDenoiseShader.js +1 -0
  2304. package/dist-browser/three/addons/shaders/RGBShiftShader.js +1 -0
  2305. package/dist-browser/three/addons/shaders/SAOShader.js +1 -0
  2306. package/dist-browser/three/addons/shaders/SMAAShader.js +1 -0
  2307. package/dist-browser/three/addons/shaders/SSAOShader.js +1 -0
  2308. package/dist-browser/three/addons/shaders/SSRShader.js +1 -0
  2309. package/dist-browser/three/addons/shaders/SepiaShader.js +1 -0
  2310. package/dist-browser/three/addons/shaders/SobelOperatorShader.js +1 -0
  2311. package/dist-browser/three/addons/shaders/SubsurfaceScatteringShader.js +1 -0
  2312. package/dist-browser/three/addons/shaders/TechnicolorShader.js +1 -0
  2313. package/dist-browser/three/addons/shaders/ToonShader.js +1 -0
  2314. package/dist-browser/three/addons/shaders/TriangleBlurShader.js +1 -0
  2315. package/dist-browser/three/addons/shaders/UnpackDepthRGBAShader.js +1 -0
  2316. package/dist-browser/three/addons/shaders/VelocityShader.js +1 -0
  2317. package/dist-browser/three/addons/shaders/VerticalBlurShader.js +1 -0
  2318. package/dist-browser/three/addons/shaders/VerticalTiltShiftShader.js +1 -0
  2319. package/dist-browser/three/addons/shaders/VignetteShader.js +1 -0
  2320. package/dist-browser/three/addons/shaders/VolumeShader.js +1 -0
  2321. package/dist-browser/three/addons/shaders/WaterRefractionShader.js +1 -0
  2322. package/dist-browser/three/addons/textures/FlakesTexture.js +1 -0
  2323. package/dist-browser/three/addons/transpiler/AST.js +1 -0
  2324. package/dist-browser/three/addons/transpiler/GLSLDecoder.js +1 -0
  2325. package/dist-browser/three/addons/transpiler/Linker.js +1 -0
  2326. package/dist-browser/three/addons/transpiler/ShaderToyDecoder.js +1 -0
  2327. package/dist-browser/three/addons/transpiler/TSLEncoder.js +55 -0
  2328. package/dist-browser/three/addons/transpiler/Transpiler.js +1 -0
  2329. package/dist-browser/three/addons/transpiler/TranspilerUtils.js +1 -0
  2330. package/dist-browser/three/addons/transpiler/WGSLEncoder.js +30 -0
  2331. package/dist-browser/three/addons/tsl/WebGLNodesHandler.js +1 -0
  2332. package/dist-browser/three/addons/tsl/display/AfterImageNode.js +1 -0
  2333. package/dist-browser/three/addons/tsl/display/AnaglyphPassNode.js +1 -0
  2334. package/dist-browser/three/addons/tsl/display/BilateralBlurNode.js +1 -0
  2335. package/dist-browser/three/addons/tsl/display/BleachBypass.js +1 -0
  2336. package/dist-browser/three/addons/tsl/display/BloomNode.js +1 -0
  2337. package/dist-browser/three/addons/tsl/display/CRT.js +1 -0
  2338. package/dist-browser/three/addons/tsl/display/ChromaticAberrationNode.js +1 -0
  2339. package/dist-browser/three/addons/tsl/display/DenoiseNode.js +1 -0
  2340. package/dist-browser/three/addons/tsl/display/DepthOfFieldNode.js +1 -0
  2341. package/dist-browser/three/addons/tsl/display/DotScreenNode.js +1 -0
  2342. package/dist-browser/three/addons/tsl/display/FSR1Node.js +1 -0
  2343. package/dist-browser/three/addons/tsl/display/FXAANode.js +1 -0
  2344. package/dist-browser/three/addons/tsl/display/FilmNode.js +1 -0
  2345. package/dist-browser/three/addons/tsl/display/GTAONode.js +1 -0
  2346. package/dist-browser/three/addons/tsl/display/GaussianBlurNode.js +1 -0
  2347. package/dist-browser/three/addons/tsl/display/GodraysNode.js +1 -0
  2348. package/dist-browser/three/addons/tsl/display/ImportanceSampledEnvironment.js +1 -0
  2349. package/dist-browser/three/addons/tsl/display/LensflareNode.js +1 -0
  2350. package/dist-browser/three/addons/tsl/display/Lut3DNode.js +1 -0
  2351. package/dist-browser/three/addons/tsl/display/MotionBlur.js +1 -0
  2352. package/dist-browser/three/addons/tsl/display/OITPassNode.js +1 -0
  2353. package/dist-browser/three/addons/tsl/display/OutlineNode.js +1 -0
  2354. package/dist-browser/three/addons/tsl/display/ParallaxBarrierPassNode.js +1 -0
  2355. package/dist-browser/three/addons/tsl/display/PixelationPassNode.js +1 -0
  2356. package/dist-browser/three/addons/tsl/display/RGBShiftNode.js +1 -0
  2357. package/dist-browser/three/addons/tsl/display/RecurrentDenoiseNode.js +1 -0
  2358. package/dist-browser/three/addons/tsl/display/RetroPassNode.js +1 -0
  2359. package/dist-browser/three/addons/tsl/display/SMAANode.js +1 -0
  2360. package/dist-browser/three/addons/tsl/display/SSAAPassNode.js +1 -0
  2361. package/dist-browser/three/addons/tsl/display/SSAONode.js +1 -0
  2362. package/dist-browser/three/addons/tsl/display/SSGINode.js +1 -0
  2363. package/dist-browser/three/addons/tsl/display/SSRNode.js +1 -0
  2364. package/dist-browser/three/addons/tsl/display/SSSNode.js +1 -0
  2365. package/dist-browser/three/addons/tsl/display/Sepia.js +1 -0
  2366. package/dist-browser/three/addons/tsl/display/Shape.js +1 -0
  2367. package/dist-browser/three/addons/tsl/display/SharpenNode.js +1 -0
  2368. package/dist-browser/three/addons/tsl/display/SobelOperatorNode.js +1 -0
  2369. package/dist-browser/three/addons/tsl/display/StereoCompositePassNode.js +1 -0
  2370. package/dist-browser/three/addons/tsl/display/StereoPassNode.js +1 -0
  2371. package/dist-browser/three/addons/tsl/display/TAAUNode.js +1 -0
  2372. package/dist-browser/three/addons/tsl/display/TRAANode.js +1 -0
  2373. package/dist-browser/three/addons/tsl/display/TemporalReprojectNode.js +1 -0
  2374. package/dist-browser/three/addons/tsl/display/TransitionNode.js +1 -0
  2375. package/dist-browser/three/addons/tsl/display/boxBlur.js +1 -0
  2376. package/dist-browser/three/addons/tsl/display/depthAwareBlend.js +1 -0
  2377. package/dist-browser/three/addons/tsl/display/depthAwareBlur.js +1 -0
  2378. package/dist-browser/three/addons/tsl/display/hashBlur.js +1 -0
  2379. package/dist-browser/three/addons/tsl/display/radialBlur.js +1 -0
  2380. package/dist-browser/three/addons/tsl/lighting/ClusteredLightsNode.js +1 -0
  2381. package/dist-browser/three/addons/tsl/lighting/DynamicLightsNode.js +1 -0
  2382. package/dist-browser/three/addons/tsl/lighting/LightProbeGridNode.js +1 -0
  2383. package/dist-browser/three/addons/tsl/lighting/data/AmbientLightDataNode.js +1 -0
  2384. package/dist-browser/three/addons/tsl/lighting/data/DirectionalLightDataNode.js +1 -0
  2385. package/dist-browser/three/addons/tsl/lighting/data/HemisphereLightDataNode.js +1 -0
  2386. package/dist-browser/three/addons/tsl/lighting/data/PointLightDataNode.js +1 -0
  2387. package/dist-browser/three/addons/tsl/lighting/data/SpotLightDataNode.js +1 -0
  2388. package/dist-browser/three/addons/tsl/math/Bayer.js +1 -0
  2389. package/dist-browser/three/addons/tsl/math/curlNoise.js +1 -0
  2390. package/dist-browser/three/addons/tsl/math/voronoiNoise.js +1 -0
  2391. package/dist-browser/three/addons/tsl/shadows/TileShadowNode.js +1 -0
  2392. package/dist-browser/three/addons/tsl/shadows/TileShadowNodeHelper.js +1 -0
  2393. package/dist-browser/three/addons/tsl/utils/GroundedSkybox.js +1 -0
  2394. package/dist-browser/three/addons/tsl/utils/RNoise.js +1 -0
  2395. package/dist-browser/three/addons/tsl/utils/Raymarching.js +1 -0
  2396. package/dist-browser/three/addons/tsl/utils/SoftParticles.js +1 -0
  2397. package/dist-browser/three/addons/tsl/utils/SpecularHelpers.js +1 -0
  2398. package/dist-browser/three/addons/tsl/utils/TAAUtils.js +1 -0
  2399. package/dist-browser/three/addons/utils/BufferGeometryUtils.js +1 -0
  2400. package/dist-browser/three/addons/utils/CameraUtils.js +1 -0
  2401. package/dist-browser/three/addons/utils/ColorUtils.js +1 -0
  2402. package/dist-browser/three/addons/utils/GaussianSplatUtils.js +1 -0
  2403. package/dist-browser/three/addons/utils/GeometryCompressionUtils.js +1 -0
  2404. package/dist-browser/three/addons/utils/GeometryUtils.js +1 -0
  2405. package/dist-browser/three/addons/utils/LDrawUtils.js +1 -0
  2406. package/dist-browser/three/addons/utils/SceneOptimizer.js +1 -0
  2407. package/dist-browser/three/addons/utils/SceneUtils.js +1 -0
  2408. package/dist-browser/three/addons/utils/ShadowMapViewer.js +1 -0
  2409. package/dist-browser/three/addons/utils/ShadowMapViewerGPU.js +1 -0
  2410. package/dist-browser/three/addons/utils/SkeletonUtils.js +1 -0
  2411. package/dist-browser/three/addons/utils/SortUtils.js +1 -0
  2412. package/dist-browser/three/addons/utils/UVsDebug.js +1 -0
  2413. package/dist-browser/three/addons/utils/WebGLTextureUtils.js +1 -0
  2414. package/dist-browser/three/addons/utils/WebGPUTextureUtils.js +1 -0
  2415. package/dist-browser/three/addons/utils/WorkerPool.js +1 -0
  2416. package/dist-browser/three/addons/webxr/ARButton.js +1 -0
  2417. package/dist-browser/three/addons/webxr/OculusHandModel.js +1 -0
  2418. package/dist-browser/three/addons/webxr/OculusHandPointerModel.js +1 -0
  2419. package/dist-browser/three/addons/webxr/Text2D.js +1 -0
  2420. package/dist-browser/three/addons/webxr/VRButton.js +1 -0
  2421. package/dist-browser/three/addons/webxr/WebGLXRFallback.js +1 -0
  2422. package/dist-browser/three/addons/webxr/XRButton.js +1 -0
  2423. package/dist-browser/three/addons/webxr/XRControllerModelFactory.js +1 -0
  2424. package/dist-browser/three/addons/webxr/XREstimatedLight.js +1 -0
  2425. package/dist-browser/three/addons/webxr/XRHandMeshModel.js +1 -0
  2426. package/dist-browser/three/addons/webxr/XRHandModelFactory.js +1 -0
  2427. package/dist-browser/three/addons/webxr/XRHandPrimitiveModel.js +1 -0
  2428. package/dist-browser/three/addons/webxr/XRPlanes.js +1 -0
  2429. package/dist-browser/three/addons.js +1 -0
  2430. package/dist-browser/three/tsl.js +1 -0
  2431. package/dist-browser/three/webgpu.js +1 -0
  2432. package/dist-browser/three.js +1 -0
  2433. package/dist-browser/three.quarks.js +1 -0
  2434. package/dist-browser/zustand/middleware.js +1 -0
  2435. package/dist-browser/zustand/shallow.js +1 -0
  2436. package/dist-browser/zustand/vanilla.js +1 -0
  2437. package/dist-browser/zustand.js +1 -0
  2438. package/package.json +194 -0
  2439. package/rapier/LICENSE +201 -0
  2440. package/rapier/NOTICE +23 -0
  2441. package/rapier/simd/coarena.js +1 -0
  2442. package/rapier/simd/control/character_controller.js +1 -0
  2443. package/rapier/simd/control/index.js +1 -0
  2444. package/rapier/simd/control/pid_controller.js +1 -0
  2445. package/rapier/simd/control/ray_cast_vehicle_controller.js +1 -0
  2446. package/rapier/simd/dynamics/ccd_solver.js +1 -0
  2447. package/rapier/simd/dynamics/coefficient_combine_rule.js +1 -0
  2448. package/rapier/simd/dynamics/impulse_joint.js +1 -0
  2449. package/rapier/simd/dynamics/impulse_joint_set.js +1 -0
  2450. package/rapier/simd/dynamics/index.js +1 -0
  2451. package/rapier/simd/dynamics/integration_parameters.js +1 -0
  2452. package/rapier/simd/dynamics/island_manager.js +1 -0
  2453. package/rapier/simd/dynamics/multibody_joint.js +1 -0
  2454. package/rapier/simd/dynamics/multibody_joint_set.js +1 -0
  2455. package/rapier/simd/dynamics/rigid_body.js +1 -0
  2456. package/rapier/simd/dynamics/rigid_body_set.js +1 -0
  2457. package/rapier/simd/exports.js +1 -0
  2458. package/rapier/simd/geometry/broad_phase.js +1 -0
  2459. package/rapier/simd/geometry/collider.js +1 -0
  2460. package/rapier/simd/geometry/collider_set.js +1 -0
  2461. package/rapier/simd/geometry/contact.js +1 -0
  2462. package/rapier/simd/geometry/feature.js +1 -0
  2463. package/rapier/simd/geometry/index.js +1 -0
  2464. package/rapier/simd/geometry/interaction_groups.js +0 -0
  2465. package/rapier/simd/geometry/narrow_phase.js +1 -0
  2466. package/rapier/simd/geometry/point.js +1 -0
  2467. package/rapier/simd/geometry/ray.js +1 -0
  2468. package/rapier/simd/geometry/shape.js +1 -0
  2469. package/rapier/simd/geometry/toi.js +1 -0
  2470. package/rapier/simd/init.js +0 -0
  2471. package/rapier/simd/math.js +1 -0
  2472. package/rapier/simd/pipeline/debug_render_pipeline.js +1 -0
  2473. package/rapier/simd/pipeline/event_queue.js +1 -0
  2474. package/rapier/simd/pipeline/index.js +1 -0
  2475. package/rapier/simd/pipeline/physics_hooks.js +1 -0
  2476. package/rapier/simd/pipeline/physics_pipeline.js +1 -0
  2477. package/rapier/simd/pipeline/query_pipeline.js +1 -0
  2478. package/rapier/simd/pipeline/serialization_pipeline.js +1 -0
  2479. package/rapier/simd/pipeline/world.js +1 -0
  2480. package/rapier/simd/rapier.js +1 -0
  2481. package/rapier/simd/rapier_wasm3d.js +1 -0
  2482. package/rapier/simd/rapier_wasm3d_bg.js +1 -0
  2483. package/rapier/simd/rapier_wasm3d_bg.wasm +0 -0
  2484. package/rapier/simd/raw.js +1 -0
  2485. package/rapier/simd-compat/rapier.mjs +1 -0
  2486. package/rapier/types/coarena.d.ts +15 -0
  2487. package/rapier/types/control/character_controller.d.ts +191 -0
  2488. package/rapier/types/control/index.d.ts +3 -0
  2489. package/rapier/types/control/pid_controller.d.ts +50 -0
  2490. package/rapier/types/control/ray_cast_vehicle_controller.d.ts +277 -0
  2491. package/rapier/types/dynamics/ccd_solver.d.ts +15 -0
  2492. package/rapier/types/dynamics/coefficient_combine_rule.d.ts +13 -0
  2493. package/rapier/types/dynamics/impulse_joint.d.ts +375 -0
  2494. package/rapier/types/dynamics/impulse_joint_set.d.ts +79 -0
  2495. package/rapier/types/dynamics/index.d.ts +10 -0
  2496. package/rapier/types/dynamics/integration_parameters.d.ts +57 -0
  2497. package/rapier/types/dynamics/island_manager.d.ts +24 -0
  2498. package/rapier/types/dynamics/multibody_joint.d.ts +42 -0
  2499. package/rapier/types/dynamics/multibody_joint_set.d.ts +76 -0
  2500. package/rapier/types/dynamics/rigid_body.d.ts +803 -0
  2501. package/rapier/types/dynamics/rigid_body_set.d.ts +78 -0
  2502. package/rapier/types/exports.d.ts +8 -0
  2503. package/rapier/types/geometry/broad_phase.d.ts +164 -0
  2504. package/rapier/types/geometry/collider.d.ts +996 -0
  2505. package/rapier/types/geometry/collider_set.d.ts +72 -0
  2506. package/rapier/types/geometry/contact.d.ts +36 -0
  2507. package/rapier/types/geometry/feature.d.ts +6 -0
  2508. package/rapier/types/geometry/index.d.ts +11 -0
  2509. package/rapier/types/geometry/interaction_groups.d.ts +18 -0
  2510. package/rapier/types/geometry/narrow_phase.d.ts +130 -0
  2511. package/rapier/types/geometry/point.d.ts +58 -0
  2512. package/rapier/types/geometry/ray.d.ts +108 -0
  2513. package/rapier/types/geometry/shape.d.ts +632 -0
  2514. package/rapier/types/geometry/toi.d.ts +44 -0
  2515. package/rapier/types/init.d.ts +5 -0
  2516. package/rapier/types/math.d.ts +98 -0
  2517. package/rapier/types/pipeline/debug_render_pipeline.d.ts +40 -0
  2518. package/rapier/types/pipeline/event_queue.d.ts +101 -0
  2519. package/rapier/types/pipeline/index.d.ts +7 -0
  2520. package/rapier/types/pipeline/physics_hooks.d.ts +39 -0
  2521. package/rapier/types/pipeline/physics_pipeline.d.ts +12 -0
  2522. package/rapier/types/pipeline/query_pipeline.d.ts +38 -0
  2523. package/rapier/types/pipeline/serialization_pipeline.d.ts +37 -0
  2524. package/rapier/types/pipeline/world.d.ts +602 -0
  2525. package/rapier/types/rapier.d.ts +3 -0
  2526. package/rapier/types/rapier_wasm3d.d.ts +2204 -0
  2527. package/rapier/types/rapier_wasm3d_bg.wasm.d.ts +582 -0
  2528. package/rapier/types/raw.d.ts +1 -0
  2529. package/readable/rounds/LevelBanner.tsx +44 -0
  2530. package/readable/rounds/Round.tsx +228 -0
  2531. package/readable/rounds/RoundScreen.tsx +89 -0
  2532. package/readable/rounds/dist/LevelBanner.d.ts +13 -0
  2533. package/readable/rounds/dist/LevelBanner.d.ts.map +1 -0
  2534. package/readable/rounds/dist/LevelBanner.js +20 -0
  2535. package/readable/rounds/dist/LevelBanner.js.map +1 -0
  2536. package/readable/rounds/dist/Round.d.ts +74 -0
  2537. package/readable/rounds/dist/Round.d.ts.map +1 -0
  2538. package/readable/rounds/dist/Round.js +137 -0
  2539. package/readable/rounds/dist/Round.js.map +1 -0
  2540. package/readable/rounds/dist/RoundScreen.d.ts +39 -0
  2541. package/readable/rounds/dist/RoundScreen.d.ts.map +1 -0
  2542. package/readable/rounds/dist/RoundScreen.js +23 -0
  2543. package/readable/rounds/dist/RoundScreen.js.map +1 -0
  2544. package/readable/rounds/dist/index.d.ts +7 -0
  2545. package/readable/rounds/dist/index.d.ts.map +1 -0
  2546. package/readable/rounds/dist/index.js +11 -0
  2547. package/readable/rounds/dist/index.js.map +1 -0
  2548. package/readable/rounds/dist/rounds.d.ts +16 -0
  2549. package/readable/rounds/dist/rounds.d.ts.map +1 -0
  2550. package/readable/rounds/dist/rounds.js +82 -0
  2551. package/readable/rounds/dist/rounds.js.map +1 -0
  2552. package/readable/rounds/dist/rules.d.ts +65 -0
  2553. package/readable/rounds/dist/rules.d.ts.map +1 -0
  2554. package/readable/rounds/dist/rules.js +150 -0
  2555. package/readable/rounds/dist/rules.js.map +1 -0
  2556. package/readable/rounds/dist/traits.d.ts +103 -0
  2557. package/readable/rounds/dist/traits.d.ts.map +1 -0
  2558. package/readable/rounds/dist/traits.js +79 -0
  2559. package/readable/rounds/dist/traits.js.map +1 -0
  2560. package/readable/rounds/index.ts +11 -0
  2561. package/readable/rounds/rounds.ts +117 -0
  2562. package/readable/rounds/rules.ts +182 -0
  2563. package/readable/rounds/traits.ts +82 -0
@@ -0,0 +1,3 @@
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CYD5IpHG.js","./rolldown-runtime-hePW80VL.js","./BZ67u85L.js","./BoJD7UsQ.js","./uBIymjUX.js","./C_popvm5.js","./DIvOsQJS.js","./Bzy44bV2.js","./BUJHJVUo.js","./DkVVho_1.js","./BLQoPgRQ.js","./DWgUahRJ.js","./Bn-oguIM.js","./CerF2aP5.js","./7kk1UrXM.js","./Dp6fzsZG.js","./BHePouWp.js","./DVAMQgZs.js","./BFvqTjM2.js","./QRJE7tia.js","./BCEkROxA.js","./lOD1Gn8c.js","./QgFqrot_.js"])))=>i.map(i=>d[i]);
2
+ import{r as e,t}from"./rolldown-runtime-hePW80VL.js";import{B as n,Et as r,I as i,Io as a,Ls as o,Qr as s,R as c,Rs as l,V as u,Xr as d,da as f,et as p,hs as m,io as h,pn as g,qr as _,sn as ee,yn as te}from"./BoJD7UsQ.js";import{S as v,b as ne,c as re,f as ie,g as ae,h as oe,m as y,n as se,p as ce,s as le,t as b,x}from"./BLQoPgRQ.js";import"./DWgUahRJ.js";import{a as ue,n as S,t as de}from"./DYoIHzIt.js";import"./Bn-oguIM.js";import{i as fe,n as pe,r as me,t as he}from"./BFvqTjM2.js";import{c as ge,p as _e}from"./DVAMQgZs.js";import{n as ve}from"./vyik5ymL.js";import{t as ye}from"./Cvq_OonK.js";import{r as be,s as xe}from"./QgFqrot_.js";import"./CerF2aP5.js";import{n as Se,t as Ce}from"./D-ZRVGDk.js";import{t as we}from"./uBIymjUX.js";import{t as Te}from"./PDPf8POY.js";import{t as Ee}from"./BPyPftW0.js";import{u as De}from"./B4HH7vxm.js";import{t as Oe}from"./DF6Qh6eu.js";var ke={position:new l(2,1.2,3),fov:50,fieldOfView:80,minDistance:.7,maxDistance:9,eyeHeightFraction:.78,minPolarAngle:_.degToRad(10),maxPolarAngle:_.degToRad(170),firstPersonMinPolarAngle:_.degToRad(1),firstPersonMaxPolarAngle:_.degToRad(179),fadeStartMetres:.35,fadeEndMetres:.14,fadeRate:2.8,steepLook:_.degToRad(60),steepRise:.9,lookSpeed:2*Math.PI/1600,tiltShare:.77,firstPersonDistance:.01,shoulderOffset:.49,pivotRise:0},Ae={pivotDistance:.01,rotateSpeed:-.3,metresPerSecond:12,boostFactor:2,wheelMetres:.02},je={minDistance:4,maxDistance:600,minPolarAngle:_.degToRad(5),maxPolarAngle:_.degToRad(75),panShare:1,turnRate:_.degToRad(120),pinchDollySpeed:3,clickSlop:4,tiltPerDoubling:_.degToRad(15),lookAhead:20,flightSmoothTime:.3,flightElevation:80,flightZoom:3},Me={turnRate:Math.PI/2,holdSeconds:1,latchTurn:_.degToRad(30)};function Ne(e,t,n){return e.set(t,n),()=>{e.get(t)===n&&e.delete(t)}}function Pe(e){return(e??``).split(`
3
+ `).filter(e=>/:\d+:\d+\)?\s*$/.test(e))[1]?.trim()}function Fe(e){let t=Pe(e);if(t===void 0)return``;let n=t.replace(/:\d+:\d+\)?$/,``);return(t.startsWith(`at `)?t.endsWith(`)`)?n.slice(n.indexOf(` (`)+2):n.slice(3):n.slice(n.indexOf(`@`)+1)).replace(/\?.*$/,``)}var Ie=0;function Le(){Ie+=1}function Re(e){return{module:Fe(e),hotReload:Be(Pe(e)),run:Ie}}function ze(e,t){return t.run>e.run||t.hotReload&&t.module!==``&&t.module===e.module}function Be(e){return/[?&]t=\d+/.test(e??``)}var Ve=[],He=new WeakSet,Ue=new WeakMap,We=new Map,Ge=[];function Ke(e){return We.get(e)??Ge}function qe(e,t){We.set(e,t)}function Je(){return We}function Ye(e){for(let t of Ve)if(t.trait===e)return t.name}var Xe=new Set;function Ze(e){for(let t of Ve)e(t);return Xe.add(e),()=>Xe.delete(e)}var Qe=/^[a-z][A-Za-z0-9]*$/;function $e(e){if(!Qe.test(e))throw S(Error(`"${e}" cannot name a trait: a name is letters and digits starting with a lower case letter, as "damaged" and "heldWeapons" are. It is the key the dump writes the trait under.`),`SP0083`,void 0)}function et(e){switch(e[b].type){case`tag`:return`with no fields`;case`aos`:return`whose record a function makes`;default:return`with the fields ${Object.keys(e.schema).join(`, `)}`}}function tt({trait:e}){return`a trait ${et(e)}`}var nt=new Map;function rt(e,t){let n=nt.get(e);if(n&&n.trait!==t.trait&&!ze(n.source,t.source))throw S(Error(`Two definitions are named "${e}": ${n.description}, and ${t.description}. The name is the key the dump, the devtools and a room's stream write a trait under, so each needs its own: rename one of them.`),`SP0084`,void 0);nt.set(e,t)}function it(e){return Ue.get(e)}function at(e){return He.has(e)}function ot(e,t){let{name:n,trait:r}=e;rt(n,{trait:r,description:tt(e),source:t});let i=Ve.findIndex(e=>e.name===n);i<0?Ve.push(e):Ve[i]=e,He.add(r),e.entities.length>0&&We.set(r,e.entities);for(let t of Xe)t(e)}function C(e,t,n={}){$e(e);let{ownerOnly:r=!1,serverOnly:i=!1,local:a=!1,predicted:o=!1,seenByAll:s=!1,anyEntity:c=!1,entities:l=[]}=n,u=Object.entries({ownerOnly:r,serverOnly:i,local:a,predicted:o}).filter(([,e])=>e).map(([e])=>e);if(u.length>1)throw S(Error(`${e} sets ${u.join(` and `)}: a trait streams to its owner, stays on the room, is kept by the room and each page, or is predicted on her page, so pick one.`),`SP0085`,`defineTrait`);if(n.seenByAll!==void 0&&!o)throw S(Error(`${e} sets seenByAll without predicted: seenByAll streams a predicted trait to every page, so add predicted: true, or drop seenByAll for a trait every page sees already.`),`SP0086`,`defineTrait`);if(n.anyEntity!==void 0&&!o)throw S(Error(`${e} sets anyEntity without predicted: anyEntity lets any entity hold a predicted trait, so add predicted: true, or drop anyEntity for a trait any entity holds already.`),`SP0087`,`defineTrait`);let d=Re(Error().stack),f=t===void 0?x():x(t);return ot({name:e,trait:f,ownerOnly:r||o&&!s,serverOnly:i,local:a,predicted:o,entities:l},d),o&&!c&&Ue.set(f,e),f}var st=function(e){return e.Predicted=`predicted`,e.Server=`server`,e}({}),ct=function(e){return e.Everyone=`everyone`,e.Controller=`controller`,e}({}),w=C(`controlled`,{controller:null,simulation:`predicted`,serial:0,visibility:`everyone`,context:``},{entities:[`controller`]}),lt=x({serial:0}),ut=C(`roomController`,{name:``},{serverOnly:!0}),dt=C(`writtenInput`,{buttons:0,axes:()=>[],vectors:()=>[],angles:()=>[]},{serverOnly:!0}),ft=C(`viewTarget`,{entity:null},{ownerOnly:!0,entities:[`entity`]}),T={offset:.01,gravity:9.8},pt={band:{enter:.03,leave:.025},blendSteps:6};function mt(e){return ht.add(e),e}var ht=new WeakSet,gt=mt({gravity:[0,-T.gravity,0],solverIterations:4,destroyBelowHeight:-500});function _t(e){let t=[],{gravity:n,solverIterations:r,destroyBelowHeight:i}=e;return n!==void 0&&(n.length!==3||!n.every(Number.isFinite))&&t.push(`gravity is ${JSON.stringify(n)}: give three finite numbers, metres a second squared along x, y and z, such as [0, -9.8, 0].`),r!==void 0&&(!Number.isInteger(r)||r<1)&&t.push(`solverIterations is ${r}: give a whole number of passes, 1 or more; Rapier's default is 4.`),i!=null&&!Number.isFinite(i)&&t.push(`destroyBelowHeight is ${i}: give a height in metres, or null to keep every body.`),t}function vt(e){let t=_t(e);if(t.length>0)throw S(Error(`definePhysics: ${t.join(` `)}`),`SP0434`,`definePhysics`);return mt({gravity:e.gravity??gt.gravity,solverIterations:e.solverIterations??gt.solverIterations,destroyBelowHeight:e.destroyBelowHeight===void 0?gt.destroyBelowHeight:e.destroyBelowHeight})}function yt(e){return typeof e==`object`&&!!e&&ht.has(e)}var bt=x({settings:()=>gt});function xt(e){return e.get(bt)?.settings??gt}function St(e){return e}function Ct(e,t,n){let r=St(t);e.has(r)||e.add(r),e.set(r,n)}function wt(e){return e}function Tt(e,t){return e.get(t)}function Et(...e){return y(...e)}function Dt(e){return e}var Ot=le,kt=re,At=ce,jt=ie,Mt=oe,Nt;function Pt(){return Nt}function Ft(e,t,n,r){let i=Nt;Nt=e;try{t(n,r)}finally{Nt=i}}var It=28;function E(e){return v.worlds[e>>>It]??void 0}var Lt=new Map;Ze(({name:e,trait:t,serverOnly:n})=>{n&&Lt.set(t,e)});var Rt;function zt(e){let t=Lt.get(e);if(t!==void 0)throw S(Error(`${Pt()??`A system`} read "${t}" on a page, where it never is: the trait is serverOnly, so only the room holds it. Move the read to a system whose entry leaves runsOn out, which runs on the room alone. Where the page needs the value too, define the trait without serverOnly so the room streams it, with predicted: true where her page predicts it on her character, or with local: true so the room and the page each keep their own.`),`SP0089`,void 0)}function Bt(e){if(typeof e==`function`)zt(e);else if(Array.isArray(e))zt(e[0]);else if(typeof e!=`object`||!e)return;else se in e?(e.traits.forEach(zt),`modifiers`in e&&Array.isArray(e.modifiers)&&e.modifiers.forEach(Bt)):`parameters`in e&&e.parameters.forEach(Bt)}function Vt(e,t){if(e===Rt)for(let e of t)Bt(e)}var Ht=[`get`,`has`,`set`,`add`];function Ut(e,t,n){let r=e,i=r[t],a=t===`set`?1:1/0;r[t]=function(...t){if(Rt!==void 0&&n(this)===Rt)for(let e=0;e<t.length&&e<a;e++)Bt(t[e]);return i.apply(this??e,t)}}var Wt=!1,Gt=new WeakSet;function Kt(e){if(!Gt.has(e)){Gt.add(e);for(let t of[...Ht,`query`,`queryFirst`])Ut(e,t,()=>e);if(!Wt){Wt=!0;for(let e of Ht)Ut(Number.prototype,e,e=>E(e))}}}var qt=[];function Jt(e){qt.push(Rt),Rt=e}function Yt(e){let t=Rt;Rt=void 0;try{return e()}finally{Rt=t}}function Xt(){Rt=qt.pop()}var Zt;function Qt(e){let t=Zt;return Zt=e,t}function $t(e){if(Zt)for(let t of e)if(se in t)for(let e of t.traits)Zt.add(e);else`schema`in t&&Zt.add(t)}var en=[],tn=0,nn=[],rn=new WeakMap;function an(e){let t=rn.get(e);if(t!==void 0)return t;t=[];for(let n of e.parameters){if(se in n){if(n.type===`not`)continue;t=null;break}if(!(`schema`in n)){t=null;break}n[b].type!==`tag`&&t.push(n)}return rn.set(e,t),t}function on(e){if(e.dirtyQueries.size!==0){for(let t of e.dirtyQueries){let e=t.toRemove;for(let n=e.length-1;n>=0;n--){let r=e.rawDense[n];e.remove(r),t.entities.remove(r)}}e.dirtyQueries.clear()}}function sn(e,t){return e.queryInstances[t.id]??e.queriesHashMap.get(t.hash)}function cn(e,t){let n=e[b],r=sn(n,t);return r?on(n):e.query(t),r??sn(n,t)}function ln(e,t,n){let r=en[tn]??={entities:[],count:0,traits:[],stores:[],records:[],changed:[]};tn+=1;let{rawDense:i,length:a}=t.entities;for(let e=0;e<a;e++)r.entities[e]=i[e];r.count=a;let o=e[b].traitInstances;for(let e=0;e<n.length;e++){let{id:t,schema:i}=n[e];r.stores[e]=o[t]?.store,r.records[t]??={},nn[t]??=Object.keys(i)}return r.traits.length=n.length,r}function un(e,t,n){let r=n.id();for(let n=0;n<t.length;n++){let i=t[n],a=e.stores[n];if(i[b].type===`aos`){e.traits[n]=i[b].get(r,a);continue}let o=e.records[i.id],s=nn[i.id];for(let e=0;e<s.length;e++){let t=s[e];o[t]=a[t][r]}e.traits[n]=o}}function D(e,t,n){let r=Dt(t);Vt(e,r.parameters),$t(r.parameters);let i=an(r);if(!i){e.query(r).readEach(n);return}let a=ln(e,cn(e,r),i);try{for(let e=0;e<a.count;e++){let t=a.entities[e];un(a,i,t),n(a.traits,t,e)}}finally{--tn}}function dn(e,t,n){Vt(e,t.parameters),$t(t.parameters);let r=an(t);if(!r){e.query(t).updateEach(n);return}let i=cn(e,t),a=e[b].trackedTraits,o=ln(e,i,r),{changed:s}=o;s.length=0;try{for(let t=0;t<o.count;t++){let i=o.entities[t];un(o,r,i);let c;for(let e=0;e<r.length;e++){let t=r[e];t[b].type===`aos`&&a.has(t)&&((c??=[])[e]={...o.traits[e]})}if(n(o.traits,i,t),!e.has(i))continue;let l=i.id();for(let e=0;e<r.length;e++){let t=r[e],n=t[b],u=o.traits[e];if(!a.has(t)){n.fastSet(l,o.stores[e],u);continue}(n.fastSetWithChangeDetection(l,o.stores[e],u)||n.type===`aos`&&!ne(u,c?.[e]))&&s.push(i,t)}}let t=e[b].traitInstances;for(let e=0;e<s.length;e+=2){let n=s[e],r=s[e+1];if(!n.has(r))continue;let i=t[r.id]?.changeSubscriptions;if(i)for(let e of i)e(n)}}finally{--tn}}function fn(e,t,n){let r=Dt(t);if(Vt(e,r.parameters),$t(r.parameters),!an(r)){let t=e.query(r);return n?t.find(n):t[0]}let{rawDense:i,length:a}=cn(e,r).entities;for(let e=0;e<a;e++){let t=i[e];if(!n||n(t))return t}}function pn(e,t,n){let r=St(t);if(e.has(r))return r[b].type===`soa`?(E(e)?.[b].traitInstances[r.id]?.store)?.[n][e.id()]:e.get(r)?.[n]}function mn(e){return typeof e==`object`&&e?e.position:void 0}var hn=new ee;function gn(e,t){if(t instanceof f)return e.copy(t);let[n,r,i]=t;return e.setFromEuler(hn.set(n,r,i))}function _n(e,t){if(typeof t==`number`)return e.setScalar(t);if(t instanceof l)return e.copy(t);let[n,r,i]=t;return e.set(n,r,i)}function vn(e,t){if(`x`in t)return e.copy(t);let[n,r,i]=t;return e.set(n,r,i)}function yn(e,t){return e.position.copy(t.position),e.rotation.copy(t.rotation),e.scale.copy(t.scale),e}var O=C(`transform`,()=>bn(),{predicted:!0,anyEntity:!0,seenByAll:!0});function bn({position:e,rotation:t,scale:n}={}){let r={position:new l,rotation:new f,scale:new l(1,1,1)};return e&&vn(r.position,e),t&&gn(r.rotation,t),n!==void 0&&_n(r.scale,n),r}var k=function(e){return e.Server=`server`,e.Client=`client`,e.Both=`both`,e}({}),xn=C(`authority`,{context:`server`}),Sn=C(`velocity`,()=>new l,{predicted:!0,anyEntity:!0,seenByAll:!0}),Cn=x(()=>bn()),wn=x({drop:0,previous:0}),Tn=C(`teleport`,{count:0},{predicted:!0,anyEntity:!0,seenByAll:!0}),En=function(e){return e.Left=`left`,e.Right=`right`,e}({}),Dn=C(`turn`,{target:()=>new f,turnSeconds:0,turnSecondsLeft:0,side:()=>`left`,armed:!0},{predicted:!0,anyEntity:!0,seenByAll:!0}),On=C(`model`,{name:``,animation:``}),kn=x(),An=C(`displayName`,{name:``}),jn=x({object:()=>null}),Mn=x({object:()=>null}),Nn=x({height:0,center:()=>new l});function Pn(e){let t=e.schema;if(typeof t==`function`)return t();let n={};for(let e in t){let r=t[e];n[e]=typeof r==`function`?r():r}return n}var Fn=x({disposers:()=>[]}),In=x({id:``}),Ln=x(),Rn=x({count:0}),zn=x(()=>new Map);function Bn(e){return e?.has(zn)??!1}var Vn=x();function Hn(e){return e.has(Vn)}var Un=x({path:``}),Wn=x({offset:()=>new l,previous:()=>new l,seconds:0}),Gn=x({value:1});function A(e){return e.has(In)&&pn(e,xn,`context`)!==k.Client}var Kn=new Set([`input`,`character`,`steer`,`transform`,`velocity`,`turn`,`pose`,`path`]),qn=Symbol(`authorityWorld`),Jn=Symbol(`authorityEntity`),Yn=Symbol(`authorityScope`);function Xn(e,t){if(!e.isOpen)throw S(Error(`${t} was handed the step of a join that has ended: a join hook's step reaches the joining player and what her join spawns only while her join hooks run. Keep no step past its hook; a system's own step reaches the world.`),`SP0392`,void 0)}function Zn(e,t){let n=e,r=n?.[Yn];if(!r)return or(e,t);Xn(r,t);let i=n?.[qn];if(!i)throw S(Error(`${t} was handed a join step with no world.`),`SP0393`,void 0);return i}var Qn=new WeakMap,$n=new WeakMap;function er(e,t){let n=($n.get(e)??0)+(t?1:-1);n>0?$n.set(e,n):$n.delete(e)}function tr(e){return $n.has(e)}function nr(e,t){if($n.has(e))throw S(Error(`${t} was handed an authority over the world while a join runs, whose hooks reach the joining player and what her join spawns alone, so a refused join can take back all it did. Pass the hook's step, or change the rest of the world from a system once her join has run.`),`SP0394`,void 0)}function rr(e){if(Bn(e))throw S(Error(`requireAuthority ran on a page in a room, which decides no outcome: the room does, and its stream brings the result. Ask isAuthoritative(world) first, or take the outcome to a system on the room alone.`),`SP0042`,`requireAuthority`);let t=Qn.get(e);return t||(t={[qn]:e},Qn.set(e,t)),t}function ir(e,t){return Bn(e)?!t.isAlive()||t.has(In)?null:{[qn]:e,[Jn]:t}:rr(e)}function ar(e,t){if(Bn(e))throw S(Error(`${t} ran on a page in a room, which decides no outcome: the room does, and its stream brings the result. Call it with the room's step, inside if (step.authoritative) or in a system with no runsOn, whose step is the room's.`),`SP0043`,void 0)}function or(e,t){let n=e,r=n?.[qn];if(!r||n?.[Jn]!==void 0||n?.[Yn]!==void 0)throw S(Error(`${t} was handed no authority over its world: pass the room's step, inside if (step.authoritative) or in a system with no runsOn, or requireAuthority(world) outside a step.`),`SP0395`,`readAuthorityWorld`);return ar(r,t),nr(r,t),r}function sr(e,t,n){let r=e,i=r?.[qn];if(!i)throw S(Error(`${n} was handed no authority: pass the room's step, inside if (step.authoritative) or in a system with no runsOn, requireAuthority(world) outside a step, or findAuthority(world, entity) for an entity only a page holds.`),`SP0396`,void 0,t);if(E(t)!==i)throw S(Error(`${n} was handed the authority of another world than its entity's: pass the authority of the world the entity lives in.`),`SP0397`,void 0,t);let a=r[Yn];if(a){if(Xn(a,n),!a.reaches(t))throw S(Error(`${n} was handed a join hook's step, which reaches the joining player and the entities her join spawned alone: a join adds to her and spawns, and leaves the rest of the world as it was, so a refused join undoes all of it. Change the rest of the world from a system, whose step reaches it.`),`SP0398`,void 0,t);return i}let o=r[Jn];if(o===void 0)ar(i,n),nr(i,n);else if(o!==t)throw S(Error(`${n} was handed an authority over another entity: findAuthority(world, entity) gives one over the entity it names alone.`),`SP0399`,void 0,t);return i}var j=x();function cr(e,t){return(typeof e==`number`?E(e):e)?.has(j)?(console.warn(t),!0):!1}var lr=x(()=>({tick:0}));function ur(e){return e.get(lr)||(e.add(lr),e.get(lr)??{tick:0})}function dr(e){return ur(e).tick}function fr(e,t){ur(e).tick=t}function pr(e,t,n){if(!mr(e))return;let r=t.indexOf(`.`);if(r<0){n(e,t);return}let i=e[t.slice(0,r)],a=t.slice(r+1);if(!Array.isArray(i)){mr(i)&&n(i,a);return}for(let e of i)mr(e)&&n(e,a)}function mr(e){return typeof e==`object`&&!!e}var hr=function(e){return e.Reliable=`reliable`,e.Cosmetic=`cosmetic`,e.ServerOnly=`server-only`,e.Local=`local`,e}({}),gr=function(e){return e.Entity=`entity`,e.World=`world`,e}({}),_r=new Map,vr=/^[a-z][A-Za-z0-9]*$/;function yr(e,t,n={}){if(!vr.test(e))throw S(Error(`"${e}" cannot name an event: a name is letters and digits starting with a lower case letter, as "damaged" and "roundEnded" are. The log, the dump and a room's stream know the event by it.`),`SP0403`,`defineEvent`);let{delivery:r=`reliable`,scope:i=`entity`,entities:a=[],elements:o={}}=n,s=Re(Error().stack),c=_r.get(e);if(c&&!ze(c.source,s))throw S(Error(`Two events are named "${e}": the log, the dump and a room's stream know an event by its name, so each needs its own. Rename one of them.`),`SP0404`,`defineEvent`);let l={name:e,delivery:r,scope:i,create:t===void 0?()=>({}):typeof t==`function`?t:()=>Tr(t),hasRecord:t!==void 0,entities:a,elements:o,source:s};return _r.set(e,l),l}function br(e){return _r.get(e)}function xr(){return[..._r.values()]}function Sr(e){return e.entities}function Cr(e){return e.elements}function wr(e){return e.create()}function Tr(e){if(e instanceof l||e instanceof o||e instanceof f)return e.clone();if(Array.isArray(e))return e.map(Tr);if(!mr(e))return e;let t=Object.getPrototypeOf(e);if(t!==Object.prototype&&t!==null)return e;let n={};for(let t in e)n[t]=Tr(e[t]);return n}function Er(e,t){let n=e.create();if(!t)return n;for(let e in t){let r=t[e];r!==void 0&&(n[e]=Tr(r))}return n}var Dr=x(()=>({steps:0,landings:0,next:0,sent:0,drained:0,events:[],cursors:[],bytes:0,lostThrough:{step:-1,place:-1}})),Or=new WeakMap;function kr(e){let t=Or.get(e);return t||(t={listeners:new Map,drains:!1,sends:!1,stepEmits:new Map,emitted:0,mostHeld:0,refused:new Map,byName:new Map,lateReads:0,framedSinceLanding:!0,releases:new Map},Or.set(e,t)),t}function Ar(e){return e.get(Dr)||(e.add(Dr),e.get(Dr))}function jr(e){return Ar(e).next}function Mr(e,t){let n=Ar(e);if(n.next<=t)return;let r=n.events.filter(e=>e.sequence<t);for(let e=r.length;e<n.events.length;e++)n.bytes-=n.events[e].bytes;n.events=r,n.next=t}var Nr=16384,Pr=8388608;function Fr(e){if(typeof e==`string`)return 16+e.length*2;if(typeof e!=`object`||!e)return 8;if(e instanceof l||e instanceof o||e instanceof f)return 24;let t=16;if(Array.isArray(e)){for(let n of e)t+=Fr(n);return t}for(let n in e)t+=8+Fr(e[n]);return t}var Ir=60;function Lr(e,t){return e.unread||e.step<t||e.step===t&&e.place<0}function Rr(e){let t,n=e.steps-60;for(let r of e.cursors)if(r)for(let e in r){let i=r[e];i.step<n||(!t||i.step<t.step||i.step===t.step&&i.place<t.place)&&(t=i)}return t}function zr(e,t,n){return!Lr(e,t.steps)||!e.unread&&n!==void 0&&e.step>=t.steps-60&&!ui(e,n.step,n.place)}function Br(e,t){let n=Or.get(e),{events:r}=t,i=Rr(t),a=0;for(;a<r.length;){let e=r[a];if(zr(e,t,i)||n?.sends&&e.sequence>=t.sent||n?.drains&&e.sequence>=t.drained)break;a++}a>0&&Vr(t,a)}function Vr(e,t){for(let n=0;n<t;n++)e.bytes-=e.events[n].bytes;e.events.splice(0,t)}function Hr(e,t,n){t.events.push(n),t.bytes+=n.bytes;let r=kr(e);r.emitted++,r.byName.set(n.name,(r.byName.get(n.name)??0)+1),t.events.length>r.mostHeld&&(r.mostHeld=t.events.length)}var Ur={world:null,log:null,step:null,place:-1,system:null};function Wr(){let{system:e,place:t}=Ur;return e?e.name||`systems[${t}]`:``}var Gr=0,Kr=!1;function qr(e,t){let n=Ar(e);n.steps++;let r=Or.get(e);r&&(r.framedSinceLanding=!0),Ur.world=e,Ur.log=n,Ur.step=t,Ur.place=-1;let i=Or.get(e)?.stepEmits;i&&i.size>0&&i.clear()}function Jr(e,t){Ur.place=e,Ur.system=t,Gr++}function Yr(){return Ur.system?Gr:-1}function Xr(e){Ur.world=null,Ur.log=null,Ur.step=null,Ur.place=-1,Ur.system=null;let t=e.get(Dr);t&&Br(e,t),Si(e)}function Zr(e){Kr=e}function Qr(e,t){if(!e||e.has(j))throw S(Error(t),[[`SP0504`,`emitEvent(%s)`],[`SP0505`,`emitEvent(%s) took an authority, and %s is a local event, which the world that draws emits: pass the world, emitEvent(world, %s, ...).`],[`SP0506`,`%s emitted %s, a local event, inside a step: a local event is the world that draws' own, emitted outside any step, as an animation's clip mark is. Emit it from a view, or declare it reliable and emit it with the step's authority.`],[`SP0507`,`emitEvent(%s) took a world, and %s is an outcome: pass an authority, the room's step, requireAuthority(world) between steps, or findAuthority(world, entity) for an entity only this page holds.`],[`SP0508`,`%s was emitted during a replay of her character after a correction: a replay runs predicted state again from her inputs, and its events were emitted when the tick first ran. Emit it from an ordinary system, which runs once a step.`],[`SP0509`,`emitEvent(%s) named %s: an event on an entity takes the living entity it is on, { entity }.`],[`SP0510`,`emitEvent(%s) took an authority over one entity, from findAuthority, and emitted on %s: an authority from findAuthority emits only on the entity it was found for.`],[`SP0511`,`emitEvent(%s) ran on a page in a room, which decides no outcome: the room does, and its stream brings the event. Emit it on the room, inside if (step.authoritative) or in a system with no runsOn, or with findAuthority(world, entity) for an entity only this page holds.`]],void 0);$r.has(t)||$r.size>=100||($r.add(t),console.error(t))}var $r=new Set;function ei(e,t,...n){let r=_r.get(t.name);if(!r)throw S(Error(`emitEvent was handed no event: make it with defineEvent(name, schema).`),`SP0405`,`emitEvent`);let[i,a]=r.scope===`world`?[n[0],void 0]:r.hasRecord?[n[0],n[1]]:[void 0,n[0]],o=typeof e==`object`&&!!e&&qn in e,s=o?e[qn]:e;if(!s)throw S(Error(`emitEvent(${r.name}) was handed no authority: pass the room's step, requireAuthority(world) outside a step, or findAuthority(world, entity) for an entity only this page holds.`),`SP0406`,`emitEvent`);let c=a?.entity;if(o&&!ti(s,e,r,c)||!ni(s,r,e,o,c))return;let l=Ar(s),u=Ur.world===s&&Ur.log===l,d=Er(r,i),f=Fr(d);if(l.events.length>=16384||l.bytes+f>8388608){ri(s,r);return}if(u){let e=kr(s),t=Wr();e.stepEmits.set(t,(e.stepEmits.get(t)??0)+1)}let p=u?Ur.step.tick:dr(s);Hr(s,l,{sequence:l.next++,name:r.name,step:u?l.steps:l.steps+1,place:u?Ur.place:-1,landing:l.landings,tick:p,on:c??-1,entity:c??null,record:d,emitter:u?Wr():`between steps`,unread:r.delivery===`local`,bytes:f})}function ti(e,t,n,r){let i=`emitEvent(${n.name})`;try{if(!(Yn in t))nr(e,i);else if(n.scope===`world`||r===void 0)throw S(Error(`${i} was handed a join hook's step, which reaches the joining player and what her join spawns alone: emit an event about the world from a system, once her join has run.`),`SP0407`,void 0,r);else sr(t,r,i)}catch(t){if(tr(e))throw t;return Qr(e,t instanceof Error?t.message:i),!1}return!0}function ni(e,t,n,r,i){if(t.delivery===`local`){if(r)return Qr(e,`emitEvent(${t.name}) took an authority, and ${t.name} is a local event, which the world that draws emits: pass the world, emitEvent(world, ${t.name}, ...).`),!1;if(Ur.world===e)return Qr(e,`${Wr()||`A system`} emitted ${t.name}, a local event, inside a step: a local event is the world that draws' own, emitted outside any step, as an animation's clip mark is. Emit it from a view, or declare it reliable and emit it with the step's authority.`),!1}else if(!r)return Qr(e,`emitEvent(${t.name}) took a world, and ${t.name} is an outcome: pass an authority, the room's step, requireAuthority(world) between steps, or findAuthority(world, entity) for an entity only this page holds.`),!1;if(Kr&&Bn(e))return Qr(e,`${t.name} was emitted during a replay of her character after a correction: a replay runs predicted state again from her inputs, and its events were emitted when the tick first ran. Emit it from an ordinary system, which runs once a step.`),!1;if(t.scope===`entity`&&(i===void 0||!i.isAlive()))return Qr(e,`emitEvent(${t.name}) named ${i===void 0?`no entity`:`an entity that is gone`}: an event on an entity takes the living entity it is on, { entity }.`),!1;let a=r?n[Jn]:void 0;return a!==void 0&&a!==i?(Qr(e,`emitEvent(${t.name}) took an authority over one entity, from findAuthority, and emitted on ${i===void 0?`the world`:`another`}: an authority from findAuthority emits only on the entity it was found for.`),!1):r&&a===void 0&&Bn(e)?(Qr(e,`emitEvent(${t.name}) ran on a page in a room, which decides no outcome: the room does, and its stream brings the event. Emit it on the room, inside if (step.authoritative) or in a system with no runsOn, or with findAuthority(world, entity) for an entity only this page holds.`),!1):!0}function ri(e,t){let n=kr(e);if(n.refused.set(t.name,(n.refused.get(t.name)??0)+1),!e.has(j))return;let r=``,i=0;for(let[e,t]of n.stepEmits)t>i&&(r=e,i=t);throw S(Error(`${t.name} was emitted past the bound of ${Nr} events or ${Pr} bytes held (maximumHeldEvents, maximumHeldEventBytes)${r?`, and ${r} emitted ${i} this step, the most`:``}: a runaway emitter, such as an emit every step for every entity. Emit on a change, or keep the value in a trait.`),`SP0408`,void 0)}var ii=new Map;function ai(e){let t=ii.get(e);t||ii.set(e,t={generation:-1,used:0,arrays:[]}),t.generation!==Gr&&(t.generation=Gr,t.used=0);let n=t.arrays[t.used]??(t.arrays[t.used]=Object.assign([],{gap:!1}));return t.used++,n.length=0,n}function oi(e,t){let n=Ur.place,r=e.cursors[n]??={},i=r[t];i||(r[t]=i={step:e.steps-1,place:n});let a=si.get(i);if(a||si.set(i,a={generation:-1,step:0,place:0,gap:!1}),a.generation!==Gr){a.generation=Gr,a.step=i.step,a.place=i.place;let r=i.step<e.steps-60;r&&li(t,e.steps-i.step),a.gap=r||!ui(e.lostThrough,i.step,i.place),i.step=e.steps,i.place=n}return a}var si=new WeakMap,ci=new Set;function li(e,t){let n=Ur.world;if(!n)return;kr(n).lateReads++;let r=Wr(),i=`${r}\n${e}`;n.has(j)&&!ci.has(i)&&(ci.add(i),console.warn(`${r} read ${e} ${t} steps after its last read of it, past the 60 a world keeps an event for (maximumUnreadSteps), so the oldest of them are gone. Read it at least once a second, or keep what it needs in a trait.`))}function ui(e,t,n){return e.step<t||e.step===t&&e.place<n}function di(e){e.entity=e.on>=0&&e.on.isAlive()?e.on:null}function fi(e,t,n){let r=Ur.log;if(e!==Ur.step||!r)throw S(Error(`readEvents(step, ${t.name}) ran outside the system its step runs: a view hears an event with useEvent, and a system reads in the step it is handed, keeping no step for later.`),`SP0409`,`readEvents`);if(t.delivery===`local`)throw S(Error(`readEvents(step, ${t.name}) read a local event, which no step emits: hear it in a view with useEvent.`),`SP0410`,`readEvents`);let i=ai(t.name),{steps:a}=r,o=Ur.place,s=oi(r,t.name),c=n?.entity,{events:l}=r;for(let e=0;e<l.length;e++){let n=l[e];if(!(n.name!==t.name||n.unread)&&!ui(n,s.step,s.place)){if(!ui(n,a,o))break;(c===void 0||n.on===c)&&(di(n),i.push(n))}}return i.gap=s.gap,i}function pi(e,t,n,r){let i=kr(e),a=i.listeners.get(t.name);a||i.listeners.set(t.name,a=new Set);let o={heard:n,entity:r,from:Ar(e).next};return a.add(o),()=>{a.delete(o)}}function mi(e){typeof reportError==`function`?reportError(e):console.error(e)}function hi(e){kr(e).drains=!0}function gi(e){let t=kr(e),n=Ar(e);t.drains=!0,t.framedSinceLanding=!0;let r=n.next,{events:i}=n,a=i.length;for(let e=0;e<a;e++){let r=i[e];if(r.sequence<n.drained)continue;let a=t.listeners.get(r.name);if(a&&a.size!==0&&_r.get(r.name)?.delivery!==`server-only`){di(r);for(let e of a)if(!(r.sequence<e.from)&&(e.entity===void 0||e.entity===r.on))try{e.heard(r)}catch(e){mi(e)}}}n.drained=r,Br(e,n),Si(e)}function _i(e){let t=Ar(e),n=kr(e);if(n.framedSinceLanding){n.framedSinceLanding=!1,t.landings++;for(let e of t.events)!e.unread&&!Lr(e,t.steps)&&e.landing<=t.landings-2&&(e.unread=!0);Br(e,t),Si(e)}}function vi(e,t){let n=Ar(e),r=Fr(t.record),i=0;for(;i<n.events.length&&(n.events.length-i>=16384||n.bytes+r>8388608);)n.bytes-=n.events[i].bytes,i++;if(i>0){let t=n.events[i-1];Ei(n,t.step,t.place),n.events.splice(0,i),Oi.set(e,(Oi.get(e)??0)+i),e.has(j)&&console.warn(`This page fell ${Nr} events or ${Pr} bytes behind the room (maximumHeldEvents, maximumHeldEventBytes), so it dropped its oldest ${i}: ${Oi.get(e)} so far. A reader's readEvents reports the gap.`)}Hr(e,n,{sequence:n.next++,name:t.name,step:n.steps+1,place:-1,landing:n.landings,tick:t.tick,on:t.on,entity:t.on>=0?t.on:null,record:t.record,emitter:`room`,unread:!1,bytes:r})}function yi(e,t,n){let r=Ar(e),i=kr(e),a=r.next;if(!Ci(r,i,t,a)){n();return}i.releases.set(t,{through:a,release:n})}function bi(e){let t=Or.get(e)?.releases;return t?[...t.keys()]:[]}function xi(e){let t=Or.get(e)?.releases;if(!t||t.size===0)return;let n=[...t.values()];t.clear();for(let{release:e}of n)e()}function Si(e){let t=Or.get(e);if(!t||t.releases.size===0)return;let n=Ar(e),r=[];for(let[e,i]of t.releases)Ci(n,t,e,i.through)||(t.releases.delete(e),r.push(i.release));for(let e of r)e()}function Ci(e,t,n,r){for(let i of e.events){if(i.sequence>=r)break;if(wi(e,t,i)&&Ti(i,n))return!0}return!1}function wi(e,t,n){return!Lr(n,e.steps)||t.drains&&n.sequence>=e.drained}function Ti(e,t){if(e.on===t)return!0;let n=_r.get(e.name);if(!n)return!1;let r=!1;for(let i of n.entities)pr(e.record,i,(e,n)=>{let i=e[n];(i===t||Array.isArray(i)&&i.includes(t))&&(r=!0)});return r}function Ei(e,t,n){let{lostThrough:r}=e;(t>r.step||t===r.step&&n>r.place)&&(r.step=t,r.place=n)}function Di(e){let t=Ar(e);Ei(t,t.steps+1,-1)}var Oi=new WeakMap;function ki(e){let t=e.get(Dr);return t?t.events.filter(e=>e.emitter===`room`&&!Lr(e,t.steps)):[]}function Ai(e){return e.get(Dr)?.events??[]}var ji=C(`characterCapsule`,{radius:0,height:0,collisionMask:()=>null}),Mi={...ji.schema,radius:.35,height:1.4,collisionMask:null},Ni=function(e){return e.AddVelocity=`add-velocity`,e.AddUpwardVelocity=`add-upward-velocity`,e.DoNothing=`do-nothing`,e}({}),Pi=C(`characterController`,{stepHeight:.6,maxSlopeRadians:50*Math.PI/180,floorSnapDistance:.6,gravity:!0,gravityScale:1,jumpHeight:1.2,groundFriction:8,height:0,pushes:()=>null,platformOnLeave:`do-nothing`,turnWithPlatform:!1},{predicted:!0,anyEntity:!0}),Fi={...Pi.schema,pushes:null},Ii={...Mi,step:Fi.stepHeight,floorSnapDistance:Fi.floorSnapDistance},M=C(`character`,{isGrounded:!0,floorNormal:()=>new l(0,1,0),standingOn:null,verticalSpeed:0,airSeconds:0,jumpsSinceGrounded:0,externalVelocity:()=>new l,platformVelocity:()=>new l,height:0,launchCount:0},{predicted:!0,anyEntity:!0,seenByAll:!0,entities:[`standingOn`]}),Li=C(`addedVelocity`,{velocity:()=>new l,launchCount:0},{predicted:!0,anyEntity:!0,seenByAll:!0}),Ri=x({points:()=>null}),N=x({handle:()=>null}),zi=C(`gravity`,{value:()=>new l(...gt.gravity)}),Bi=yr(`fellOutOfWorld`,{height:0}),Vi=x(()=>[]);function Hi(e,t){let n=e?.get(Vi);if(n&&!n.some(e=>e.name===t))throw S(Error(`${t}() is off in this world: add ${t}() to plugins in src/game.ts.`),`SP0166`,`requirePlugin`)}function Ui(e,t,n){if(Hi(e,t),!(e?.get(Vi)?.find(e=>e.name===t))?.omitted.includes(n))return;let r=n.slice(t.length+1);throw S(Error(`${n} does not run in this world: the game's plugins omit it with omit(${t}.systems.${r}), and this call needs it. Drop the omit, or replace the system rather than omit it.`),`SP0482`,void 0)}var Wi=/^[a-z][A-Za-z0-9]*$/,Gi=new Map,Ki=new Map,qi=new Set;function Ji(e){let{name:t}=e;if(!t)throw S(Error(`A behaviour needs a name: defineBehaviour({ name: "glow", trait: GlowTrait }).`),`SP0080`,`defineBehaviour`);if(!Wi.test(t))throw S(Error(`"${t}" cannot name a behaviour: a name is camel case, starting with a lower case letter, as "healthBar" is.`),`SP0081`,`defineBehaviour`);let n=Re(Error().stack),r=Gi.get(t),i=Ki.get(t);if(r&&i&&!ze(i,n))throw S(Error(`Two behaviours are named "${t}": one of a trait ${et(r.trait)}, and one of a trait ${et(e.trait)}. The name is the behaviour's row in Add behaviour, its key in the dump and its page in the Wiki, so each needs its own: rename one of them.`),`SP0082`,`defineBehaviour`);at(e.trait)||rt(t,{trait:e.trait,description:`a behaviour of a trait ${et(e.trait)}`,source:n}),Gi.set(t,e),Ki.set(t,n);for(let t of qi)t(e);return e}function Yi(e){for(let t of Gi.values())e(t);return qi.add(e),()=>qi.delete(e)}function Xi(e){return{name:e.name}}function Zi(e){return`except`in e?{except:e.except.map(Xi)}:e.map(Xi)}function Qi(e,t){return Object.freeze({name:`${e}.${t}`})}var $i=Object.freeze({default:Qi(`core`,`default`),ground:Qi(`core`,`ground`)}),ea=Object.freeze({players:Qi(`characters`,`players`),npcs:Qi(`characters`,`npcs`)}),ta=[$i.default.name,$i.ground.name,ea.players.name,ea.npcs.name];function na(e,t){let n={};for(let r of t){if(!/^[a-z][A-Za-z0-9]*$/.test(r))throw S(Error(`"${r}" cannot name a collision layer of ${e}: a name is letters and digits starting with a lower case letter, as "ball" is.`),`SP0428`,void 0);if(Object.hasOwn(n,r))throw S(Error(`${e} declares the collision layer "${r}" twice: each layer is declared once.`),`SP0429`,void 0);n[r]=Qi(e,r)}return Object.freeze(n)}function ra(e){let t=[...ta];for(let{layers:n}of e)for(let{name:e}of n)t.includes(e)||t.push(e);if(t.length<=16)return t;let n=e.filter(({layers:e})=>e.length>0).map(({plugin:e,layers:t})=>`${e} ${t.length}`).join(`, `);throw S(Error(`The world's plugins declare ${t.length} collision layers, and a world holds 16, since Rapier packs a layer into 16 bits: the core reserves 2 and the characters 2, which leaves 12 for a game's plugins, and they declare ${n}. Share a layer between plugins by importing one handle, or tell bodies apart with a collider's own layer, a body's ignore or a query's filter.`),`SP0430`,void 0)}var ia=x({layers:()=>ta}),aa=new WeakMap;function oa(e){return e.get(ia)?.layers??ta}function sa(e,t){let n=oa(e),r=aa.get(n);r||(r=new Map(n.map((e,t)=>[e,t])),aa.set(n,r));let i=r.get(t.name);if(i!==void 0)return i;let a=t.name.slice(0,t.name.indexOf(`.`));throw S(Error(`A body names the collision layer ${t.name}, and no plugin this world lists declares it: list ${a} in the game's plugins, or name a layer one of them declares.`),`SP0431`,void 0)}function ca(e,t){if(!t)return 65535;if(`except`in t){let n=65535;for(let r of t.except)n&=~(1<<sa(e,r));return n}let n=0;for(let r of t)n|=1<<sa(e,r);return n}function la(e,t,n){return(1<<sa(e,t)+16|ca(e,n))>>>0}function ua(e,t){return e?`except`in e?!e.except.some(({name:e})=>e===t.name):e.some(({name:e})=>e===t.name):!0}function da(e){let t=ta.indexOf(e.name);if(t<0)throw S(Error(`${e.name} is no layer the core reserves: read its bit from its world.`),`SP0432`,void 0);return t}function fa(e,t=65535){return(1<<da(e)+16|t)>>>0}function pa(e){return e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),e^e>>>16}function ma(...e){let t=e.length;for(let n of e)t=Math.imul(t,2654435761)+pa(n)|0;return(pa(t)>>>0)/2**32}function ha(e){let t=2166136261;for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619);return t>>>0}function ga(e,t){let n=10**t;return Math.round(e*n)/n+0}function P(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function _a(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!_a(e[n],t[n]))return!1;return!0}if(!P(e)||!P(t))return!1;let n=0;for(let r in e)if(n++,!(r in t)||!_a(e[r],t[r]))return!1;let r=0;for(let e in t)r++;return n===r}function va(e,t){if(!P(e)||!P(t))return t;for(let n in e)if(!(n in t))return t;let n={};for(let r in t)_a(e[r],t[r])||(n[r]=va(e[r],t[r]));return n}function ya(e,t){let n;for(let r in t)_a(e[r],t[r])||(n??={},n[r]=va(e[r],t[r]));for(let r in e)r in t||(n??={},n[r]=null);return n}function ba(e,t){let n={};for(let[r,i]of Object.entries(t.entities)){let t=ya(e.entities[r]??{},i);t&&(n[r]=t)}return{changed:n,removed:Object.keys(e.entities).filter(e=>!(e in t.entities)),hash:t.hash}}var xa=1e4,Sa=function(e){return e.Number=`number`,e.Integer=`integer`,e.String=`string`,e.Boolean=`boolean`,e.Entity=`entity`,e.Entities=`entities`,e}({}),Ca=x(()=>new Map);function wa(e,t,n){let r=Pa(t,n.shape,n.predicted);if(r>32768)throw S(Error(`registerMessage: "${t}" can take ${r} bytes as JSON, past the room's ${Da} (maximumFrameBytes); lower a field's maxLength or split it into several messages`),`SP0186`,void 0);let i=e.get(Ca);return i||(i=new Map,e.add(Ca(i))),Ne(i,t,{...n})}function Ta(e){return!/[\ud800-\udbff](?![\udc00-\udfff])|(?<![\ud800-\udbff])[\udc00-\udfff]/.test(e)}var Ea=4096,Da=8*Ea,Oa=25,ka=6,Aa=new TextEncoder;function ja(e){return Aa.encode(JSON.stringify(e)).length}var Ma=1538;function Na(e){return e.kind===`boolean`?5:e.kind===`entity`?Ma:e.kind===`entities`?2+e.maxLength*1539:e.kind===`string`?2+ka*Math.min(e.maxLength,Ea):e.kind===`integer`&&Number.isSafeInteger(e.min)&&Number.isSafeInteger(e.max)?Math.max(ja(e.min),ja(e.max)):e.min===e.max?ja(e.min):e.min>=0?24:Oa}function Pa(e,t,n=!1){let r=ja(n?{type:`press`,tick:2**53-1,ordinal:3,name:e,payload:{}}:{type:`message`,name:e,payload:{}});for(let[e,n]of Object.entries(t))r+=ja(e)+1+Na(n)+1;return Object.keys(t).length>0?r-1:r}function Fa(e){if(e.length*3<=4096)return!1;let t=0;for(let n=0;n<e.length;n++){let r=e.charCodeAt(n);if(r<128?t+=1:r<2048?t+=2:r<=56319&&r>=55296&&(e.charCodeAt(n+1)&64512)==56320?(t+=4,n++):t+=3,t>4096)return!0}return!1}function Ia(e){return typeof e==`string`&&e.length>0&&e.length<=256&&!e.startsWith(`local:`)&&Ta(e)}function La(e,t){return t.kind===`boolean`?typeof e==`boolean`:t.kind===`entity`?t.optional&&e===null||Ia(e):t.kind===`entities`?Array.isArray(e)&&e.length<=t.maxLength&&e.every(Ia):t.kind===`string`?typeof e==`string`&&e.length<=t.maxLength&&!Fa(e)&&Ta(e):typeof e==`number`&&Number.isFinite(e)&&e>=t.min&&e<=t.max&&(t.kind===`number`||Number.isInteger(e))}function Ra(e,t){if(!P(e))return!1;for(let n of Object.keys(e))if(!Object.hasOwn(t,n))return!1;for(let n of Object.keys(t))if(!La(e[n],t[n]))return!1;return!0}var za=x(()=>[]);function Ba(e,t){e.has(za)||e.add(za),e.get(za)?.push(t)}var Va=[];function Ha(e,t){if(t?.predicted)throw S(Error(`readMessages(world, ${t.name}) reads a plain message: "${t.name}" is a press, so read it with readPresses(step, handle) in a system marked predicted: true.`),`SP0187`,`readMessages`);let n=e.get(za);if(!n||!t)return n??Va;let r;for(let e of n)e.name===t.name&&(r??=[]).push(e);return r??Va}function Ua(e,t){if(!t)return!1;for(let n in t){let{kind:r}=t[n],i=e.payload[n];if(r===`entity`&&typeof i==`number`&&!i.isAlive()||r===`entities`&&Array.isArray(i)&&i.some(e=>!e.isAlive()))return!0}return!1}function Wa(e){let t=e.get(za);if(!t||t.length===0)return;let n=e.get(Ca),r=0;for(let i of t){if(!Ua(i,n?.get(i.name)?.shape)){t[r++]=i;continue}cr(e,`A message of "${i.name}" was dropped before any system read it: an entity it names was destroyed after it arrived.`)}t.length=r}function Ga(e){let t=e.get(za);t&&(t.length=0)}var Ka=x({tick:0,wallMilliseconds:0,rate:1});function qa(e,t){e.has(Ka)?e.set(Ka,t):e.add(Ka(t))}function Ja(e){let t=e.get(Ka);if(!t)return dr(e);let n=performance.now()-t.wallMilliseconds;return t.tick+n/1e3*60*t.rate}function Ya(e){return Ja(e)/60}function Xa(e,t){return t.isAlive()?Za(e,t):null}function Za(e,t){let n=t.isAlive()?t.get(In)?.id??t.get(Un)?.path:void 0;if(n!==void 0)return n;let r=t.generation(),i=r===0?String(t.id()):`${t.id()}.${r}`;return e.has(zn)?`local:${i}`:i}var Qa=y(Un);function $a(e,t){let n=e.get(zn)?.get(t);return n?.isAlive()?n:fn(e,Qa,n=>Za(e,n)===t)??e.entities.find(n=>Za(e,n)===t)}function eo(e){for(let t in e){let{kind:n}=e[t];if(n===Sa.Entity||n===Sa.Entities)return!0}return!1}function to(e,t){if(typeof t!=`number`)return!1;let n=t;if(!n.isAlive())return;let r=Za(e,n);return r.startsWith(`local:`)?void 0:r}function no(e,t,n){if(!eo(t))return{payload:n};let r={...n};for(let i in t){let a=t[i],o=n[i];if(a.kind===Sa.Entity){if(o===null)continue;let t=to(e,o);if(t===void 0)return{missing:i};r[i]=t}else if(a.kind===Sa.Entities&&Array.isArray(o)){let t=[];for(let n of o){let r=to(e,n);if(r===void 0)return{missing:i};t.push(r)}r[i]=t}}return{payload:r}}var ro=function(e){return e.Ran=`ran`,e.Refused=`refused`,e.Dropped=`dropped`,e}({}),io=function(e){return e.Late=`late`,e.Rate=`rate`,e.Unread=`unread`,e.Malformed=`malformed`,e.MissingEntity=`missing-entity`,e.NotYours=`not-yours`,e.LevelChanged=`level-changed`,e.Ambiguous=`ambiguous`,e}({}),F=function(e){return e.NotHeld=`not-held`,e.Downed=`downed`,e.Casting=`casting`,e.CoolingDown=`cooling-down`,e.NoResource=`no-resource`,e.NoTarget=`no-target`,e.NotHostile=`not-hostile`,e.OutOfRange=`out-of-range`,e.NoLineOfSight=`no-line-of-sight`,e}({}),ao=2,oo=64,so=60,co=C(`pressCredit`,()=>({}),{predicted:!0,anyEntity:!0}),lo=function(e){return e.None=`none`,e.Final=`final`,e.Predicted=`predicted`,e}({}),uo=x(()=>[]);function fo(e,t){let n=Math.round((e-t)*1e3)/1e3;return Math.min(Math.max(n,0),po)}var po=.999,mo=new WeakMap;function ho(e){let t=mo.get(e);if(!t)throw S(Error(`The press of "${e.name}" for tick ${e.origin.tick} was not queued with queuePress, so it has no payload to send.`),`SP0188`,void 0);return t}var go=x(()=>({queued:[]})),_o=x(()=>({byName:new Map}));function vo({tick:e,ordinal:t}){return`${e}:${t}`}function yo({entity:e,fraction:t=0,...n}){let r={...n,atSeconds:(n.origin.tick+t)/60,entity:wt(e),status:void 0,read:!1,charged:!1,refuse:(e,t)=>Vo(r,e,t)};return r}function bo(e,t){e.has(uo)||e.add(uo),e.get(uo)?.push(t)}function xo(e,t){let n=e.get(Ca)?.get(t.name);if(!n)throw S(Error(`queuePress: "${t.name}" is no message of this world: add its plugin to plugins in src/game.ts.`),`SP0189`,`queuePress`);let r=no(e,n.shape,t.payload);if(r.missing===void 0&&!Ra(r.payload,n.shape))throw S(Error(`queuePress: the press of "${t.name}" carries a payload of another shape than its own: each field it declares, in range, an entity field this world's own entity, and no other.`),`SP0190`,`queuePress`);e.has(go)||e.add(go);let i=Ja(e);e.get(go)?.queued.push(r.missing===void 0?{...t,wire:r.payload,pressedTicks:i}:{...t,wire:{},missing:r.missing,pressedTicks:i})}var So=null,Co=null;function wo(e){return e===So}var To=[],Eo=To,Do=0,Oo=new Set,ko=new Set,Ao=100;function jo(e){Do++;try{e()}finally{Do--}}function Mo(e){return!e.has(zn)&&!e.has(Vn)}function No(e,t,n){let r=e.get(Ca)?.get(t)?.shape;return r&&no(e,r,n).missing}function Po(e,t,n){let r=e.get(go);if(!r||r.queued.length===0)return To;let i=[];for(let{entity:a,name:o,payload:s,wire:c,missing:l,pressedTicks:u}of r.queued.splice(0,4)){if(!a.isAlive())continue;let r=yo({entity:a,name:o,payload:s,origin:{tick:t,ordinal:i.length},result:n,fraction:fo(u,t)});mo.set(r,c);let d=l??No(e,o,s);d!==void 0&&(r.status=`dropped`,r.reason=`missing-entity`,r.detail=d,r.charged=!0),i.push(r)}return i}function Fo(e,t){t.charged=!0;let{entity:n,name:r,origin:i}=t;if(!n.isAlive())return;let a=e.get(Ca)?.get(r)?.messagesPerSecond??0;n.has(co)||n.add(co);let o=n.get(co);if(!o)return;let s=2*so,c=o[r]??={units:s,tick:i.tick};if(c.units=Math.min(s,c.units+Math.max(0,i.tick-c.tick)*a),c.tick=Math.max(c.tick,i.tick),c.units<so){t.status=`dropped`,t.reason=`rate`;return}c.units-=so}function Io(e,t){if(So=t,Co=e,Mo(e))for(let n of Po(e,t.tick,`final`))bo(e,n);Eo=e.get(uo)??To;for(let t=0;t<Eo.length;t++)Eo[t].charged||Fo(e,Eo[t])}function Lo(e){for(let t=0;t<Eo.length;t++){let n=Eo[t];n.status===void 0&&(n.read?n.status=`ran`:(n.status=`dropped`,n.reason=`unread`,Ro(e,n.name))),n.result!==`none`&&Go(e,n.name,{origin:n.origin,payload:n.payload,status:n.status,...n.reason!==void 0&&{reason:n.reason},...n.detail!==void 0&&{detail:n.detail},predicted:n.result===`predicted`})}Eo.length=0,Eo=To,So=null,Co=null}function Ro(e,t){if(!e.has(j)||Oo.has(t))return;Oo.add(t);let n=t.slice(0,t.indexOf(`.`));console.error(`A press of "${t}" of plugin ${n} reached its tick and no system read it, so it was dropped as unread. Read it with readPresses(step, handle) in a system of ${n} marked predicted: true, and check that ${n} is in plugins in src/game.ts.`)}function zo(e,t){if(!(typeof e==`string`&&e.length<=64))throw S(Error(`press.refuse: the ${t} "${String(e).slice(0,80)}" is past 64 characters (maximumPressReasonLength); give a short reason a player reads in one line.`),`SP0191`,void 0)}function Bo(e,t){let{refusals:n}=e;if(!n||n.includes(t))return;let r=n.map(e=>`"${e}"`).join(`, `),i=n.length>0?`press.refuse: "${String(t)}" is no refusal "${e.name}" declares, which are ${r}: refuse with one of them, or add it to refusals in its definePress.`:`press.refuse: "${e.name}" declares no refusals, so nothing refuses it with "${String(t)}": add refusals: ["${String(t)}"] to its definePress.`;if(Co?.has(j))throw S(Error(i),[[`SP0192`,`press.refuse: "%s" is no refusal "%s" declares, which are %s: refuse with one of them, or add it to refusals in its definePress.`],[`SP0193`,`press.refuse: "%s" declares no refusals, so nothing refuses it with "%s": add refusals: ["%s"] to its definePress.`]],void 0);let a=`${e.name}\n${t}`;ko.has(a)||ko.size>=Ao||(ko.add(a),console.error(i))}function Vo(e,t,n){if(zo(t,`reason`),Bo(e,t),n!==void 0&&zo(n,`detail`),!Eo.includes(e))throw S(Error(`press.refuse: the press of "${e.name}" for tick ${e.origin.tick} is settled; refuse a press in the step that reads it.`),`SP0194`,void 0);e.status===void 0&&(e.status=`refused`,e.reason=t,n!==void 0&&(e.detail=n))}var Ho=[];function Uo(e,t){let{name:n}=t;if(!t.predicted)throw S(Error(`readPresses(step, ${n}) reads a press: "${n}" is a plain message, so read it with readMessages(world, handle).`),`SP0195`,`readPresses`);if(e!==So)throw S(Error(`readPresses(step, ${n}) ran outside the step it names: read a press in the system the step runs, and keep no step for later.`),`SP0196`,`readPresses`);if(Do===0&&Co?.has(j))throw S(Error(`"${n}" is a press, and a system not marked predicted: true read it: her page replays only predicted systems, so it would run her press once and never again. Put the system in an entry with predicted: true.`),`SP0197`,`readPresses`);let r;for(let i=0;i<Eo.length;i++){let a=Eo[i];a.name===n&&a.status===void 0&&(e.rerunEntity&&a.entity!==e.rerunEntity||(a.read=!0,a.refusals=t.refusals,(r??=[]).push(a)))}return r??Ho}function Wo(e,t){let n;for(let e of t.values())n=e.origin;return n!==void 0&&(e.tick<n.tick||e.tick===n.tick&&e.ordinal<n.ordinal)}function Go(e,t,n){e.has(_o)||e.add(_o);let r=e.get(_o);if(!r)return;let i=r.byName.get(t),a=vo(n.origin);if(i&&!i.has(a)&&Wo(n.origin,i))return;let o=new Map(i);o.set(a,n);for(let e of o.keys()){if(o.size<=16)break;o.delete(e)}let s=new Map(r.byName);s.set(t,o),e.set(_o,{byName:s})}var Ko=new Map;function qo(e,{name:t}){return e.get(_o)?.byName.get(t)??Ko}function Jo(e){e.has(_o)&&e.set(_o,{byName:new Map})}function Yo(e,t){return{kind:Sa.Integer,min:e,max:t}}function Xo(e,t){return{kind:Sa.Number,min:e,max:t}}function Zo(e){return{kind:Sa.String,maxLength:e}}function Qo(){return{kind:Sa.Boolean}}function $o({optional:e=!1}={}){return{kind:Sa.Entity,optional:e}}function es(e){if(!Number.isInteger(e)||e<1)throw S(Error(`entities(${String(e)}): give the most entities the list may hold, a whole number from 1.`),`SP0145`,`entities`);return{kind:Sa.Entities,maxLength:e}}var ts=4,ns=20;function rs(e,{messagesPerSecond:t=4}={}){return{fields:e,messagesPerSecond:t}}function is(e,{pressesPerSecond:t=20,refusals:n=[],keys:r=[],touch:i,many:a=!1}={}){if(os(n),(r.length>0||i)&&Object.keys(e).length>0)throw S(Error(`definePress: a press bound to a key or a touch button sends no payload, and this one carries fields (${Object.keys(e).join(`, `)}): drop its keys and send it from code with sendPress, or bind a pageAction whose handler sends it.`),`SP0146`,`definePress`);return{fields:e,pressesPerSecond:t,refusals:[...n],press:!0,keys:r,touch:i,many:a}}var as=new Set(Object.values(io));function os(e){let t=new Set;for(let n of e){let e=`definePress: the refusal "${String(n).slice(0,80)}"`;if(typeof n!=`string`||n.length===0)throw S(Error(`${e} is empty or not text: name each refusal with a short code, such as "no-charge".`),`SP0147`,void 0);if(!Ta(n))throw S(Error(`${e} is not well-formed UTF-16, a lone surrogate, which the wire's UTF-8 would send as another code: name it with plain text.`),`SP0148`,void 0);if(n.length>64)throw S(Error(`${e} is past 64 characters (maximumPressReasonLength): name it with a short code a HUD maps to a line.`),`SP0149`,void 0);if(as.has(n))throw S(Error(`${e} is a drop's reason, a PressDropReason the engine sets itself, so a HUD could not tell the two apart: name the refusal otherwise.`),`SP0150`,void 0);if(t.has(n))throw S(Error(`${e} is listed twice: list it once.`),`SP0151`,void 0);t.add(n)}}function ss(e){return typeof Reflect.get(e,`pressesPerSecond`)==`number`}function cs(e){return typeof Reflect.get(e,`messagesPerSecond`)==`number`}function ls(e){return ss(e)?{shape:{...e.fields},messagesPerSecond:e.pressesPerSecond,predicted:!0,...e.many&&{many:!0}}:cs(e)?{shape:{...e.fields},messagesPerSecond:e.messagesPerSecond}:{shape:{...e},messagesPerSecond:4}}function us(e,t,n){let r=ls(n),i=`${e}.${t}`;return ss(n)?{name:i,settings:r,predicted:!0,refusals:n.refusals,keys:n.keys,touch:n.touch,many:n.many}:{name:i,settings:r}}function ds(e,t){return Object.fromEntries(Object.entries(t).map(([t,n])=>[t,us(e,t,n)]))}var fs=new DataView(new ArrayBuffer(8));function ps(e){return fs.setFloat64(0,e),fs.getUint32(0)>>>20&2047}function ms(e){return fs.setUint32(0,1023+e<<20),fs.setUint32(4,0),fs.getFloat64(0)}var hs=-.16666666666666632,gs=.00833333333332249,_s=-.0001984126982985795,vs=27557313707070068e-22,ys=-2.5050760253406863e-8,bs=158969099521155e-24,xs=.0416666666666666,Ss=-.001388888888887411,Cs=2480158728947673e-20,ws=-2.7557314351390663e-7,Ts=2.087572321298175e-9,Es=-11359647557788195e-27;function Ds(e,t,n){let r=e*e,i=r*r,a=gs+r*(_s+r*vs)+r*i*(ys+r*bs),o=r*e;return n?e-(r*(.5*t-o*a)-t-o*hs):e+o*(hs+r*a)}function Os(e,t){let n=e*e,r=n*n,i=n*(xs+n*(Ss+n*Cs))+r*r*(ws+n*(Ts+n*Es)),a=.5*n,o=1-a;return o+(1-o-a+(n*i-e*t))}var ks=.6366197723675814,As=1.5707963267341256,js=6077100506506192e-26,Ms=6077100506303966e-26,Ns=20222662487959506e-37,Ps=20222662487111665e-37,Fs=84784276603689e-45,Is=0,Ls=0,Rs=1647099,zs=6.283185307179586;function Bs(e){let t=Math.abs(e)<Rs?e:e%zs,n=Math.round(t*ks),r=t-n*As,i=n*js;Is=r-i;let a=ps(t);if(a-ps(Is)>16){let e=r;i=n*Ms,r=e-i,i=n*Ns-(e-r-i),Is=r-i,a-ps(Is)>49&&(e=r,i=n*Ps,r=e-i,i=n*Fs-(e-r-i),Is=r-i)}return Ls=r-Is-i,n}var Vs=.7853984832763672,Hs=1.4901161193847656e-8,Us=1.0536709282860102e-8;function Ws(e){let t=Math.abs(e);if(t<Vs)return t<Hs?e:Ds(e,0,!1);switch(Bs(e)&3){case 0:return Ds(Is,Ls,!0);case 1:return Os(Is,Ls);case 2:return-Ds(Is,Ls,!0);default:return-Os(Is,Ls)}}function Gs(e){let t=Math.abs(e);if(t<Vs)return t<Us?1:Os(e,0);switch(Bs(e)&3){case 0:return Os(Is,Ls);case 1:return-Ds(Is,Ls,!0);case 2:return-Os(Is,Ls);default:return Ds(Is,Ls,!0)}}var Ks=3.141592653589793,qs=1.5707963267948966,Js=6123233995736766e-32,Ys=.16666666666666666,Xs=-.3255658186224009,Zs=.20121253213486293,Qs=-.04005553450067941,$s=.0007915349942898145,ec=3479331075960212e-20,tc=-2.403394911734414,nc=2.0209457602335057,rc=-.6882839716054533,ic=.07703815055590194,ac=6938900521352129e-33;function oc(e){return e*(Ys+e*(Xs+e*(Zs+e*(Qs+e*($s+e*ec)))))/(1+e*(tc+e*(nc+e*(rc+e*ic))))}function sc(e){let t=Math.abs(e);if(!(t<1))return e===1?0:e===-1?3.141592653589793:NaN;if(t<.5)return t<ac?1.5707963267948966:qs-(e-(Js-e*oc(e*e)));if(e<0){let t=(1+e)*.5,n=Math.sqrt(t);return Ks-2*(n+(oc(t)*n-Js))}let n=(1-e)*.5,r=Math.sqrt(n);fs.setFloat64(0,r),fs.setUint32(4,0);let i=fs.getFloat64(0),a=(n-i*i)/(r+i);return 2*(i+(oc(n)*r+a))}var cc=.6931471803691238,lc=19082149292705877e-26,uc=1.4426950408889634,dc=.16666666666666602,fc=-.0027777777777015593,pc=6613756321437934e-20,mc=-16533902205465252e-22,hc=4.1381367970572385e-8,gc=709.782712893384,_c=-745.1332191019411,vc=3.725290298461914e-9,yc=9332636185032189e-317,bc=898846567431158e293;function xc(e){if(Number.isNaN(e))return e;if(e>gc)return 1/0;if(e<_c)return 0;if(Math.abs(e)<vc)return 1+e;let t=Math.round(e*uc),n=e-t*cc,r=t*lc,i=n-r,a=i*i,o=i-a*(dc+a*(fc+a*(pc+a*(mc+a*hc))));if(t===0)return 1-(i*o/(o-2)-i);let s=1-(r-i*o/(2-o)-n);return t===1024?s*2*bc:t<-1021?s*ms(t+1e3)*yc:s*ms(t)}function I(e){return e}function Sc(e){return e}function Cc(e,t,n){let r=I(t);e.has(r)||e.add(r),e.set(r,n)}function wc(e,t){return e.get(I(t))}var Tc=[];function Ec(e){Tc.push(e)}var Dc=new Map;function Oc(e){let t=Dc.get(e);return t||(t=y(e),Dc.set(e,t)),t}var kc,Ac=!1;function jc(e,t){let n=e[t];if(n===kc){e[t]=null,Ac=!0;return}if(Array.isArray(n))for(let e=n.length-1;e>=0;e--)n[e]===kc&&(n.splice(e,1),Ac=!0)}function Mc(e,t){Ac=!1;for(let n of t)pr(e,n,jc);return Ac}function Nc(e,t){let n=kc,r=Ac,i=Qt(void 0);kc=t;try{Yt(()=>{for(let[t,n]of Je()){if(e.has(t)){let r=e.get(t);Mc(r,n)&&e.set(t,r)}D(e,Oc(t),(e,r)=>{let i=r.get(t);Mc(i,n)&&r.set(t,i)})}})}finally{kc=n,Ac=r,Qt(i)}}var Pc=new WeakMap;function Fc(e,t){t?Pc.set(e,t):Pc.delete(e)}function Ic(e){return Pc.get(e)}var Lc=new WeakMap;function Rc(e,t){for(let n of Lc.get(e)??[])n(e,t);for(let n of Tc)n(e,t);Nc(e,t),t.destroy()}var L=function(e){return e.Box=`box`,e.Sphere=`sphere`,e.Capsule=`capsule`,e.Cylinder=`cylinder`,e.Cone=`cone`,e.ConvexHull=`convex-hull`,e.TriangleMesh=`triangle-mesh`,e.Heightfield=`heightfield`,e.Voxels=`voxels`,e}({});function zc(e,t,n){if(!(Number.isFinite(n)&&n>0))throw S(Error(`${e}'s ${t} is ${n}: give a length in metres greater than 0.`),`SP0435`,void 0)}function Bc(e,t,n,r){if(!(n.length%r===0&&n.every(Number.isFinite)))throw S(Error(`${e}'s ${t} holds ${n.length} numbers, or one that is not finite: give finite numbers, ${r} for each.`),`SP0436`,void 0)}function Vc({size:e}){return e.forEach((e,t)=>zc(`box`,`size[${t}]`,e)),Object.freeze({type:`box`,size:Object.freeze([e[0],e[1],e[2]])})}function Hc({radius:e}){return zc(`sphere`,`radius`,e),Object.freeze({type:`sphere`,radius:e})}function Uc({radius:e,height:t}){if(zc(`capsule`,`radius`,e),zc(`capsule`,`height`,t),t<e*2)throw S(Error(`capsule's height of ${t} m is less than its width of ${e*2} m: height runs from tip to tip, so give at least twice the radius, or a sphere.`),`SP0437`,`capsule`);return Object.freeze({type:`capsule`,radius:e,height:t})}function Wc({radius:e,height:t}){return zc(`cylinder`,`radius`,e),zc(`cylinder`,`height`,t),Object.freeze({type:`cylinder`,radius:e,height:t})}function Gc({radius:e,height:t}){return zc(`cone`,`radius`,e),zc(`cone`,`height`,t),Object.freeze({type:`cone`,radius:e,height:t})}function Kc({points:e}={}){if(e&&(Bc(`convexHull`,`points`,e,3),e.length<12))throw S(Error(`convexHull's points hold ${e.length/3} points: a hull needs four or more that do not lie on one plane.`),`SP0438`,`convexHull`);return Object.freeze({type:`convex-hull`,points:e?Object.freeze([...e]):null})}function qc({vertices:e,indices:t}){Bc(`triangleMesh`,`vertices`,e,3),Bc(`triangleMesh`,`indices`,t,3);let n=e.length/3;if(t.length===0||!t.every(e=>Number.isInteger(e)&&e>=0&&e<n))throw S(Error(`triangleMesh's indices name a vertex it lacks, or none at all: give three whole numbers per triangle, each below its ${n} vertices.`),`SP0439`,`triangleMesh`);return Object.freeze({type:`triangle-mesh`,vertices:Object.freeze([...e]),indices:Object.freeze([...t])})}function Jc({heights:e,rows:t,columns:n,size:r}){if(!Number.isInteger(t)||!Number.isInteger(n)||t<2||n<2||e.length!==t*n||!e.every(Number.isFinite))throw S(Error(`heightfield takes ${t} rows by ${n} columns and ${e.length} heights: give two or more of each, and rows times columns finite heights, row by row.`),`SP0440`,`heightfield`);return zc(`heightfield`,`size[0]`,r[0]),zc(`heightfield`,`size[1]`,r[1]),Object.freeze({type:`heightfield`,heights:Object.freeze([...e]),rows:t,columns:n,size:Object.freeze([r[0],r[1]])})}function Yc(e,t){if(!(t.length===3&&t.every(Number.isInteger)))throw S(Error(`${e} was given the cell ${JSON.stringify(t)}: a cell is three whole numbers, its place along x, y and z.`),`SP0513`,void 0)}function Xc({size:e,cells:t}){zc(`voxels`,`size`,e);for(let e of t)Yc(`voxels`,e);return Object.freeze({type:`voxels`,size:e,cells:Object.freeze(t.map(e=>Object.freeze([e[0],e[1],e[2]])))})}var R=function(e){return e.Fixed=`fixed`,e.Kinematic=`kinematic`,e.Dynamic=`dynamic`,e}({}),Zc=function(e){return e.Average=`average`,e.Min=`min`,e.Multiply=`multiply`,e.Max=`max`,e}({}),Qc=C(`body`,{bodyType:()=>`fixed`,collisionLayer:()=>Xi($i.default),collisionMask:()=>null,pushes:()=>null,mass:()=>null,centerOfMass:()=>null,linearDamping:0,angularDamping:0,gravityScale:1,continuousCollision:!1,canSleep:!0,reportContacts:!1,enabledRotations:()=>[!0,!0,!0],enabledTranslations:()=>[!0,!0,!0]}),$c=C(`bodyIgnore`,{ignore:()=>[]},{entities:[`ignore`]}),el=Sc(Qc),tl=Sc($c);function nl(){return{bodyType:`fixed`,collisionLayer:Xi($i.default),collisionMask:null,pushes:null,mass:null,centerOfMass:null,linearDamping:0,angularDamping:0,gravityScale:1,continuousCollision:!1,canSleep:!0,reportContacts:!1,enabledRotations:[!0,!0,!0],enabledTranslations:[!0,!0,!0]}}var rl=C(`collider`,{colliders:()=>[]}),il=Sc(rl),al=Sc(C(`bodyVelocity`,()=>({linear:new l,angular:new l,sleeping:!1}))),ol=new f;function sl(e,t){return{friction:e?.friction??.5,restitution:e?.restitution??0,density:e?.density??+!t,frictionCombine:e?.frictionCombine??`average`,restitutionCombine:e?.restitutionCombine??`average`}}function cl(e){let t=e.trigger??!1;e.rotation?gn(ol,e.rotation):ol.identity();let n=e.offset??[0,0,0];return{shape:e.shape,offset:[n[0],n[1],n[2]],rotation:[ol.x,ol.y,ol.z,ol.w],material:sl(e.material,t),trigger:t,collisionLayer:e.collisionLayer?Xi(e.collisionLayer):null,collisionMask:e.collisionMask?Zi(e.collisionMask):null}}function ll(e){return(Array.isArray(e)?e:[e]).map(cl)}function ul(e){let t=nl();return e?(t.bodyType=e.bodyType,e.collisionLayer&&(t.collisionLayer=Xi(e.collisionLayer)),e.collisionMask&&(t.collisionMask=Zi(e.collisionMask)),t.reportContacts=e.reportContacts??!1,e.bodyType===`kinematic`&&e.pushes&&(t.pushes=e.pushes.map(Xi)),e.bodyType===`dynamic`&&(t.mass=e.mass??null,t.centerOfMass=e.centerOfMass??null,t.linearDamping=e.linearDamping??0,t.angularDamping=e.angularDamping??0,t.gravityScale=e.gravityScale??1,t.continuousCollision=e.continuousCollision??!1,t.canSleep=e.canSleep??!0,e.enabledRotations&&(t.enabledRotations=[...e.enabledRotations]),e.enabledTranslations&&(t.enabledTranslations=[...e.enabledTranslations])),t):t}function dl(e,t){switch(t.type){case L.Heightfield:case L.Voxels:return e===`fixed`;case L.TriangleMesh:return e!==`dynamic`;default:return!0}}function fl(e,t,n){for(let[r,{shape:i}]of n.entries())if(!dl(t,i))throw S(Error(`Entity ${e.id()} has a ${t} body and a ${i.type} collider at index ${r}, which a ${t} body cannot take: a triangle mesh goes on a fixed or a kinematic body, and a heightfield or voxels on a fixed one. Give it a box, a sphere, a capsule, a cylinder, a cone or a convex hull, or make the body fixed.`),`SP0419`,void 0,e)}function pl(e,t,n){sr(e,t,`setBody`);let r=t.get(Qc);if(!r)throw S(Error(`setBody was handed entity ${t.id()}, which has no body: declare one with body and collider on its Entity, its prefab or its spawn.`),`SP0420`,`setBody`,t);let i={...r};n.bodyType!==void 0&&(i.bodyType=n.bodyType),n.collisionLayer&&(i.collisionLayer=Xi(n.collisionLayer)),n.collisionMask!==void 0&&(i.collisionMask=n.collisionMask?Zi(n.collisionMask):null),n.pushes&&(i.pushes=n.pushes.map(Xi)),n.mass!==void 0&&(i.mass=n.mass),n.centerOfMass!==void 0&&(i.centerOfMass=n.centerOfMass),n.linearDamping!==void 0&&(i.linearDamping=n.linearDamping),n.angularDamping!==void 0&&(i.angularDamping=n.angularDamping),n.gravityScale!==void 0&&(i.gravityScale=n.gravityScale),n.continuousCollision!==void 0&&(i.continuousCollision=n.continuousCollision),n.canSleep!==void 0&&(i.canSleep=n.canSleep),n.reportContacts!==void 0&&(i.reportContacts=n.reportContacts),n.enabledRotations&&(i.enabledRotations=[...n.enabledRotations]),n.enabledTranslations&&(i.enabledTranslations=[...n.enabledTranslations]),fl(t,i.bodyType,t.get(rl)?.colliders??[]),t.set(Qc,i),n.ignore&&(t.has($c)?t.set($c,{ignore:[...n.ignore]}):t.add($c({ignore:[...n.ignore]})))}function ml(e,t,n){let r=e.get(rl)?.colliders,i=r?.[t];if(!r||!i)throw S(Error(`${n} was handed entity ${e.id()}, which has ${r?`${r.length} colliders and none at index ${t}`:`no collider`}: name a collider it declares.`),`SP0421`,void 0,e);return{colliders:r,held:i}}function hl(e,t,n,{index:r=0}={}){sr(e,t,`setCollider`);let{colliders:i,held:a}=ml(t,r,`setCollider`),o=n.trigger??a.trigger,s={...a,trigger:o,material:n.material?{...a.material,...sl({...a.material,...n.material},o)}:a.material};n.shape&&(s.shape=n.shape),n.offset&&(s.offset=[n.offset[0],n.offset[1],n.offset[2]]),n.rotation&&(gn(ol,n.rotation),s.rotation=[ol.x,ol.y,ol.z,ol.w]),n.collisionLayer!==void 0&&(s.collisionLayer=n.collisionLayer&&Xi(n.collisionLayer)),n.collisionMask!==void 0&&(s.collisionMask=n.collisionMask&&Zi(n.collisionMask));let c=[...i];c[r]=s,fl(t,t.get(Qc)?.bodyType??`fixed`,c),t.set(rl,{colliders:c})}function gl(e,t,n,r,{index:i}={}){sr(e,t,`setVoxel`),Yc(`setVoxel`,n);let a=t.get(rl)?.colliders??[],o=i??a.findIndex(({shape:e})=>e.type===L.Voxels),{held:s}=ml(t,Math.max(o,0),`setVoxel`);if(s.shape.type!==L.Voxels)throw S(Error(`setVoxel was handed entity ${t.id()}, whose collider at index ${o} is a ${s.shape.type}: name a voxels collider.`),`SP0422`,`setVoxel`,t);let c=_l(s.shape,n,r);if(c===s.shape)return;let l=[...a];l[o]={...s,shape:c},Cl?.(t,o,s.shape,c,n,r),t.set(rl,{colliders:l})}function _l(e,t,n){let r=e.cells.findIndex(e=>e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]);if(n===r>=0)return e;let i=n?[...e.cells,Object.freeze([t[0],t[1],t[2]])]:e.cells.filter((e,t)=>t!==r);return Object.freeze({...e,cells:Object.freeze(i)})}function vl(e,t){if(Array.isArray(e))return e;let n=e;return[`x`,`y`,`z`,`w`].slice(0,t).map(e=>n[e])}function yl(e){return Array.isArray(e)}function bl(e){switch(e.type){case L.Box:return yl(e.size)?e:Vc({size:vl(e.size,3)});case L.Heightfield:return yl(e.size)&&yl(e.heights)?e:Jc({...e,heights:vl(e.heights,4),size:vl(e.size,2)});case L.Voxels:return e.cells.every(yl)?e:Xc({size:e.size,cells:e.cells.map(e=>vl(e,3))});case L.TriangleMesh:return yl(e.vertices)&&yl(e.indices)?e:qc({vertices:vl(e.vertices,3),indices:vl(e.indices,3)});default:return e}}function xl(e){let t=bl(e.shape);return t===e.shape&&yl(e.offset)&&yl(e.rotation)?e:{...e,shape:t,offset:vl(e.offset,3),rotation:vl(e.rotation,4)}}function Sl(e){let t=e.get(rl);if(t){let n=t.colliders.map(xl);n.some((e,n)=>e!==t.colliders[n])&&e.set(rl,{colliders:n},!1)}let n=e.get(Qc);n?.centerOfMass&&!yl(n.centerOfMass)&&e.set(Qc,{centerOfMass:vl(n.centerOfMass,3)},!1)}var Cl;function wl(e){Cl=e}function Tl(e,t=new f){let n=e/2;return t.set(0,Ws(n),0,Gs(n))}function El(e){return new ee().setFromQuaternion(e,`YXZ`).y}function Dl(e,t){return 2*sc(Math.abs(_.clamp(e.dot(t),-1,1)))}function Ol(e,t,n){let r=Dl(e,t);if(r===0)return e;let i=Math.min(1,n/r),{x:a,y:o,z:s,w:c}=t,l=e.dot(t);l<0&&(a=-a,o=-o,s=-s,c=-c,l=-l);let u=1-i;if(l<.9995){let e=sc(l),t=Ws(e);u=Ws(u*e)/t,i=Ws(i*e)/t}return e.set(e.x*u+a*i,e.y*u+o*i,e.z*u+s*i,e.w*u+c*i),l<.9995?e:e.normalize()}var kl=C(`attachment`,()=>({parent:null,offset:new l,rotation:new f}),{predicted:!0,anyEntity:!0,seenByAll:!0,entities:[`parent`]}),Al=function(e){return e.Loop=`attachment-loop`,e.Gone=`entity-gone`,e.OtherWorld=`other-world`,e}({}),jl=new f,Ml=new l,Nl=new Set;function Pl(e,t){Nl.clear();for(let n=t;n&&!Nl.has(n);n=n.get(kl)?.parent??null){if(n===e)return!0;Nl.add(n)}return!1}function Fl(e,t,n,r){if(e.has(j))throw S(Error(t===`attachment-loop`?`attach would attach entity ${n.id()} to entity ${r.id()}, which is it or follows it: an attachment cannot form a loop. Attach the child to an entity outside its own chain.`:t===`other-world`?`attach was handed entity ${n.id()} and entity ${r.id()} of two worlds: attach two entities of one world.`:`attach was handed an entity that is gone, ${n.isAlive()?r.id():n.id()}: attach two entities that are alive.`),[[`SP0400`,`attach would attach entity %s to entity %s, which is it or follows it: an attachment cannot form a loop. Attach the child to an entity outside its own chain.`],[`SP0401`,`attach was handed entity %s and entity %s of two worlds: attach two entities of one world.`],[`SP0402`,`attach was handed an entity that is gone, %s: attach two entities that are alive.`]],void 0);return t}function Il(e,t,n,r={}){let i=sr(e,t,`attach`);if(!t.isAlive()||!n.isAlive())return Fl(i,`entity-gone`,t,n);if(E(n)!==i)return Fl(i,`other-world`,t,n);if(Pl(t,n))return Fl(i,`attachment-loop`,t,n);let a=t.get(O),o=n.get(O);if(!a||!o)return Fl(i,`entity-gone`,t,n);t.has(kl)||t.add(kl);let s=t.get(kl);return s?(s.parent!==n&&(jl.copy(o.rotation).invert(),s.offset.copy(a.position).sub(o.position).applyQuaternion(jl),s.rotation.copy(jl).multiply(a.rotation),s.parent=n),r.offset&&vn(s.offset,r.offset),r.rotation&&gn(s.rotation,r.rotation),t.set(kl,s),zl(t),null):Fl(i,`entity-gone`,t,n)}function Ll(e,t){sr(e,t,`detach`),Rl(t)}function Rl(e){if(!e.has(kl))return;e.remove(kl);let t=e.get(O);if(!t)return;e.has(Dn)&&Tl(El(t.rotation),t.rotation);let n=e.get(Cn);n&&yn(n,t)}function zl(e){let t=e.get(kl),n=t?.parent;if(!t||!n?.isAlive())return!1;let r=e.get(O),i=n.get(O);if(!r||!i)return!1;Ml.copy(t.offset).applyQuaternion(i.rotation),r.position.copy(i.position).add(Ml),r.rotation.copy(i.rotation).multiply(t.rotation);let a=e.get(Sn),o=n.get(Sn);return a&&(o?a.copy(o):a.set(0,0,0)),!0}var Bl=y(kl),Vl=[],Hl=new Map;function Ul(e){Nl.clear();let t=0;for(let n=e.get(kl)?.parent??null;n&&!Nl.has(n);n=n.get(kl)?.parent??null)Nl.add(n),t++;return t}function Wl(e,t){return(Hl.get(e)??0)-(Hl.get(t)??0)}function Gl(e){return Vl.length=0,Hl.clear(),D(e,Bl,(e,t)=>{Vl.push(t),Hl.set(t,Ul(t))}),Vl.sort(Wl),Vl}function Kl(e,t){let n=t.rerunEntity;for(let r of Gl(e))(n===void 0||r===n)&&(t.authoritative||!A(r))&&zl(r)}var ql=new l;function Jl(e){for(let t of Gl(e)){let e=t.get(jn)?.object,n=t.get(kl),r=n?.parent;if(!e||!n||!r?.isAlive())continue;let i=r.get(jn)?.object,a=r.get(O),o=i?.position??a?.position,s=i?.quaternion??a?.rotation;o&&s&&(ql.copy(n.offset).applyQuaternion(s),e.position.copy(o).add(ql),e.quaternion.copy(s).multiply(n.rotation))}}Ec((e,t)=>{let n=[];D(e,Bl,([e],r)=>{e.parent===t&&n.push(r)});for(let e of n)Rl(e)});function z(e,t,n=0){return Math.sqrt(e*e+t*t+n*n)}function Yl(e,t){let n=null;return{load:()=>{if(n)return n;let t=e().then(e=>(t.status=`fulfilled`,t.value=e,e));return n=t,t},read:()=>{if(!n?.value)throw Error(t);return n.value},isLoaded:()=>!!n?.value,isStarted:()=>n!==null}}function Xl(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}var Zl=Yl(async()=>{let{default:e}=await we(async()=>{let{default:e}=await import(`./BFpenkAR.js`);return{default:e}},[],import.meta.url),t=e,r={};for(let e of Object.values(me)){let i=t[Xl(e)]?.hull;if(!i)continue;let a=new u;a.setAttribute(`position`,new n(new Float32Array(i.positions),3)),a.setIndex(i.indices),r[e]=a}return r},`Await loadRapier before baking the scatter`),Ql=Zl.load,$l=Zl.read,eu=Yl(async()=>{let[e]=await Promise.all([we(()=>import(`./CYD5IpHG.js`).then(async e=>(await e.default.init?.(),e.default)),__vite__mapDeps([0,1]),import.meta.url),Ql()]);return e},`Rapier is not loaded yet: mount a <World>, which waits for it before its ground spawns, or await loadRapier() before stepping or querying the physics.`),tu=eu.load,B=eu.read,nu=eu.isLoaded,ru=eu.isStarted,iu=.01,au=1e-4,ou=5e-4,su=.01,cu=.001;function lu(e,t,n){for(let r=0;r<3;r++){let i=e[t+r]-e[n+r];if(i!==0)return i}return 0}function uu(e,t){let n=0,r=0,i=-1;for(let a=0;a<t;a+=3)for(let o=a+3;o<t;o+=3){let t=e[a]-e[o],s=e[a+1]-e[o+1],c=e[a+2]-e[o+2],l=t*t+s*s+c*c;if(l<i)continue;let[u,d]=lu(e,o,a)<0?[o,a]:[a,o],f=lu(e,u,n)||lu(e,d,r);l===i&&f>=0||(n=u,r=d,i=l)}return{start:n,end:r,distanceSquared:i}}function du(e,t){let{start:n,end:r,distanceSquared:i}=uu(e,t),a=new l().fromArray(e,n),o=new l().fromArray(e,r).sub(a),s=new l,c=new l,u=0,d=-1;for(let n=0;n<t;n+=3){c.fromArray(e,n).sub(a).cross(o);let t=c.lengthSq();t<u||t===u&&(d<0||lu(e,n,d)>=0)||(u=t,d=n,s.copy(c))}return{origin:a,along:o,normal:s,offLine:u,lengthSquared:i}}function fu(e){let t=e.length-e.length%3;if(t<9)return null;let{origin:n,along:r,normal:i,offLine:a,lengthSquared:o}=du(e,t);if(a<=ou*ou*o)return null;if(a<=su*su*o*o)return pu(e,t,n,r,i,Math.max(iu,cu*r.length()));let s=iu*iu,c=new l;for(let r=0;r<t;r+=3){let t=c.fromArray(e,r).sub(n).dot(i);if(t*t>s*a)return e}return mu(e,t,n,i)}function pu(e,t,n,r,i,a){let o=[r.clone(),i.clone(),new l().crossVectors(r,i)];for(let e of o)e.normalize();let s=[1/0,1/0,1/0],c=[-1/0,-1/0,-1/0],u=new l;for(let r=0;r<t;r+=3)u.fromArray(e,r).sub(n),o.forEach((e,t)=>{let n=u.dot(e);s[t]=Math.min(s[t],n),c[t]=Math.max(c[t],n)});let d=new Float32Array(24),f=0;for(let e of[s[0],c[0]])for(let t of[s[1]-a,c[1]+a])for(let r of[s[2]-a,c[2]+a])u.copy(n).addScaledVector(o[0],e).addScaledVector(o[1],t).addScaledVector(o[2],r),u.toArray(d,f),f+=3;return d}function mu(e,t,n,r){r.normalize();let i=au*au,a=[],o=1/0,s=-1/0;for(let c=0;c<t;c+=3){let t=new l().fromArray(e,c),u=new l().subVectors(t,n).dot(r);o=Math.min(o,u),s=Math.max(s,u),t.addScaledVector(r,-u),a.some(e=>e.distanceToSquared(t)<=i)||a.push(t)}let c=new Float32Array(a.length*6),u=0;for(let e of a)for(let t of[o-iu,s+iu])e.clone().addScaledVector(r,t).toArray(c,u),u+=3;return c}var hu=new WeakMap,gu=new WeakSet;function _u(e){let t=new(B()).ConvexPolyhedron(e).intoRaw();return t?.free(),t!==void 0}function vu(e){return e.every(Number.isFinite)&&fu(e)!==null}function yu(e){let t=hu.get(e);if(t===void 0){if(t=e.every(Number.isFinite)?fu(e):null,t&&!_u(t)){let n=t.length-t.length%3,{origin:r,along:i,normal:a}=du(t,n);t=pu(t,n,r,i,a,0),gu.add(e)}hu.set(e,t)}return t}var bu=new WeakSet;function xu(e,t,n){bu.has(t)||cr(e,n)&&bu.add(t)}var Su=new WeakMap;function Cu(e,t,n){let r=E(e);if(!r)return;let i=Su.get(t);i||Su.set(t,i=new WeakSet),!i.has(r)&&(i.add(r),console.warn(n))}function wu(e){let t=new l().fromArray(e,0),n=[12,6,3].map(n=>new l().fromArray(e,n).sub(t)),[r,i,a]=n.map(e=>e.length()/2),o=new l().fromArray(e,21).add(t).multiplyScalar(.5),[s,c,u]=n.map(e=>e.normalize()),p=new f().setFromRotationMatrix(new d().makeBasis(s,c,u));return B().ColliderDesc.cuboid(r,i,a).setTranslation(o.x,o.y,o.z).setRotation(p)}var Tu=new l,Eu=new f,Du=new f,Ou=new f,ku=new l;function Au(e,t,n){let r=n.x===n.y&&n.y===n.z,i=n.x===n.z,{type:a}=t.shape,o=Dl(Du.fromArray(t.rotation),Eu)>0,s=a===L.Sphere&&!r?`a sphere takes one number for every axis`:(a===L.Capsule||a===L.Cylinder||a===L.Cone)&&!i?`a ${a} takes the same number across x and z`:o&&!r?`a collider turned in its entity takes one number for every axis, as a turned box would shear`:void 0;if(s)throw S(Error(`Entity ${e.id()} has a ${a} collider and the scale [${n.toArray().join(`, `)}], which would stretch it out of its shape: ${s}. Give it a box or a hull collider, or an even scale.`),`SP0512`,void 0,e)}var ju=new WeakMap;function Mu(e){let t=ju.get(e);return t||ju.set(e,t=Float32Array.from(e)),t}function Nu(e,t){return t.x===1&&t.y===1&&t.z===1?e:e.map((e,n)=>e*t.getComponent(n%3))}function Pu(e,t,n){let r=yu(t);if(!r)return xu(e,t,`Entity ${e.id()}'s hull collider has no body: its points lie on one line or at one spot, or one is not a finite number, so they wrap no face. Give it a box or a capsule collider sized to what it draws.`),null;let i=Nu(r,n);return gu.has(t)?(Cu(e,t,`Entity ${e.id()}'s hull collider fell back to a box: Rapier refused to build a hull from its points, so its body is the box around them. Give it a box or a capsule collider sized to what it draws, or a model with fewer corners.`),wu(i)):B().ColliderDesc.convexHull(i)}function Fu(e,t,n){let{ColliderDesc:r}=B();switch(t.type){case L.Box:return Tu.fromArray(t.size).multiply(n),r.cuboid(Tu.x/2,Tu.y/2,Tu.z/2);case L.Sphere:return r.ball(t.radius*n.x);case L.Capsule:{let e=t.radius*n.x;return r.capsule(Math.max(0,t.height*n.y/2-e),e)}case L.Cylinder:return r.cylinder(t.height*n.y/2,t.radius*n.x);case L.Cone:return r.cone(t.height*n.y/2,t.radius*n.x);case L.ConvexHull:{let r=t.points?Mu(t.points):e.get(Ri)?.points;return r?.length?Pu(e,r,n):null}case L.TriangleMesh:return r.trimesh(Nu(Mu(t.vertices),n),Uint32Array.from(t.indices));case L.Heightfield:{let{rows:e,columns:i,heights:a,size:o}=t,s=new Float32Array(e*i);for(let t=0;t<e;t++)for(let n=0;n<i;n++)s[n*e+t]=a[t*i+n];return r.heightfield(e-1,i-1,s,{x:o[0]*n.x,y:n.y,z:o[1]*n.z})}case L.Voxels:{let e=new Int32Array(t.cells.length*3);return t.cells.forEach((t,n)=>e.set(t,n*3)),r.voxels(e,{x:t.size*n.x,y:t.size*n.y,z:t.size*n.z})}}}function Iu(e,t,n){switch(t.type){case L.Box:return Math.min(t.size[0]*n.x,t.size[1]*n.y,t.size[2]*n.z);case L.Sphere:case L.Capsule:return t.radius*2*n.x;case L.Cylinder:case L.Cone:return Math.min(t.radius*2*n.x,t.height*n.y);case L.ConvexHull:{let r=t.points??e.get(Ri)?.points;if(!r?.length)return 1/0;let i=[1/0,1/0,1/0],a=[-1/0,-1/0,-1/0];for(let e=0;e<r.length-r.length%3;e++){let t=e%3;i[t]=Math.min(i[t],r[e]),a[t]=Math.max(a[t],r[e])}return Math.min((a[0]-i[0])*n.x,(a[1]-i[1])*n.y,(a[2]-i[2])*n.z)}default:return 1/0}}function Lu(e){let{CoefficientCombineRule:t}=B();switch(e){case Zc.Average:return t.Average;case Zc.Min:return t.Min;case Zc.Multiply:return t.Multiply;case Zc.Max:return t.Max}}function Ru(e,t,n){return la(e,n.collisionLayer??t.collisionLayer,n.collisionMask??t.collisionMask)}function zu(e,t,n){if(t.bodyType!==R.Kinematic)return(n&4294901760|65535)>>>0;let r=t.pushes?ca(e,t.pushes):n&65535;return(n&4294901760|r)>>>0}function Bu(e){return e.get(I(tl))?.ignore.some(e=>e!==null)??!1}function Vu(e,t,n,r,i,a){let{ActiveCollisionTypes:o,ActiveEvents:s,ActiveHooks:c}=B(),{material:l}=i;t.setFriction(l.friction),t.setRestitution(l.restitution),t.setFrictionCombineRule(Lu(l.frictionCombine)),t.setRestitutionCombineRule(Lu(l.restitutionCombine)),t.setSensor(i.trigger),t.setCollisionGroups(a),t.setSolverGroups(zu(n,r,a)),t.setActiveHooks(Bu(e)?c.FILTER_CONTACT_PAIRS|c.FILTER_INTERSECTION_PAIRS:c.NONE);let u=r.reportContacts||i.trigger;t.setActiveEvents(u?s.COLLISION_EVENTS:s.NONE),t.setActiveCollisionTypes(u?o.DEFAULT|o.KINEMATIC_KINEMATIC|o.KINEMATIC_FIXED:o.DEFAULT)}function Hu(e){return $u.get(e)?.body.reportContacts??!1}function Uu(e,t,n){Du.fromArray(e.rotation);let{translation:r,rotation:i}=t;ku.set(r.x,r.y,r.z).applyQuaternion(Du).add(Tu.fromArray(e.offset).multiply(n)),Ou.set(i.x,i.y,i.z,i.w).premultiply(Du)}function Wu(e,t,n,r,i){Au(t,r,i);let a=Fu(t,r.shape,i);return a?(Uu(r,a,i),a.setTranslation(ku.x,ku.y,ku.z),a.setRotation(Ou),a.setDensity(r.material.density),Vu(t,a,e,n,r,Ru(e,n,r)),a):null}var Gu={position:new l,rotation:new f};function Ku(e){let t=e.get(O);return t?(Gu.position.copy(t.position),Gu.rotation.copy(t.rotation),Gu):null}var qu=ul(void 0);function Ju(e){return e.get(I(el))??qu}function Yu(e){let{RigidBodyType:t}=B();switch(e){case R.Dynamic:return t.Dynamic;case R.Kinematic:return t.KinematicPositionBased;case R.Fixed:return t.Fixed}}var Xu=[!1,!1,!1];function Zu(e,t,n){let r=n?Xu:t.enabledRotations,i=n?Xu:t.enabledTranslations;e.setLinearDamping(t.linearDamping),e.setAngularDamping(t.angularDamping),e.setGravityScale(n?0:t.gravityScale,!1),e.enableCcd(t.continuousCollision),e.setEnabledRotations(...r,!1),e.setEnabledTranslations(...i,!1)}function Qu(e,t,{bodyType:n,pose:r,shapes:i,standIn:a=!1,body:o=qu}){let{RigidBodyDesc:s}=B(),{position:c,rotation:l}=r,u=new s(Yu(n)).setTranslation(c.x,c.y,c.z).setRotation(l),d=e.world.createRigidBody(u);Zu(d,o,a),d.userData=t;for(let t of i)e.world.createCollider(t,d);return d}var $u=new WeakMap,ed=new Set;function td(e,t,n){let r=1/0;for(let{shape:i,trigger:a}of t)a||(r=Math.min(r,Iu(e,i,n)));return r}function nd(e,t,n,r){let i=Ju(t),a=[...t.get(I(il))?.colliders??[]],o=t.get(O),s=o?.scale.clone()??new l(1,1,1),c={bodyType:i.bodyType,standIn:ad(t,i.bodyType),body:i,colliders:r,records:a,groups:a.map(t=>Ru(e,i,t)),scale:s,thinnest:td(t,a,s),position:o?.position.clone()??new l,rotation:o?.rotation.clone()??new f};return $u.set(n,c),c}function rd(e){let t=$u.get(e);if(!t)throw S(Error(`A body the scene holds was kept neither as it was built nor as a checkpoint restored it.`),`SP0427`,void 0);return t}var id=y(I(il),O,le(kl));function ad(e,t){return t===R.Dynamic&&A(e)}function od(e,t,n,r){if(!e.isDynamic()||(n.forEach((e,t)=>e?.setDensity(r[t]?.material.density??0)),e.setAdditionalMass(0,!1),e.recomputeMassPropertiesFromColliders(),t.mass===null&&t.centerOfMass===null))return;let i=e.mass(),a=t.mass??i,o=t.centerOfMass?{x:t.centerOfMass[0],y:t.centerOfMass[1],z:t.centerOfMass[2]}:e.localCom(),s=i>0?a/i:0,c=e.principalInertia(),l=e.principalInertiaLocalFrame();for(let e of n)e?.setDensity(0);e.setAdditionalMassProperties(a,o,{x:c.x*s,y:c.y*s,z:c.z*s},l,!1),e.recomputeMassPropertiesFromColliders()}function sd(e,t,n){let r=n.get(I(il))?.colliders,i=n.get(O),a=Ku(n);if(!r||!i||!a)return!1;let o=Ju(n);fl(n,o.bodyType,r);let s=[];for(let t of r){let r=Wu(e,n,o,t,i.scale);if(!r)return!1;s.push(r)}let c=Qu(t,n,{bodyType:o.bodyType,pose:a,shapes:[],standIn:ad(n,o.bodyType),body:o}),l=s.map(e=>t.world.createCollider(e,c));return od(c,o,l,r),t.bodies.set(n,c),nd(e,n,c,l),!0}function cd(e,t,n){let r=t.bodies.get(n);if(r||n.has(kl))return r;if(sd(e,t,n))return dd(t),t.fixedChanges++,t.bodies.get(n)}function ld(e,t){for(let n of t.changedBodies)!t.bodies.has(n)&&n.isAlive()&&cd(e,t,n)}function ud(e){let t=e.parent(),n=t?$u.get(t)?.colliders:void 0;if(!n)return 0;for(let t=0;t<n.length;t++)if(n[t]?.handle===e.handle)return t;return 0}function dd(e){e.placedAlone=null,e.placedSinceStep=!0}function fd(e,t){for(let{motion:n}of e.actors.values())(n.floor===t||n.perch===t)&&(n.floorRead=!1)}function pd(e){e.parent()?.wakeUp()}function md(e,t){e.world.contactPairsWith(t,pd),e.world.intersectionPairsWith(t,pd),fd(e,t.handle)}function hd(e,t){return e.offset.every((e,n)=>e===t.offset[n])&&e.rotation.every((e,n)=>e===t.rotation[n])}function gd(e,t,n,r){let i=rd(r),a=Ju(n),o=n.get(I(il))?.colliders??[],s=n.get(O)?.scale??i.scale;fl(n,a.bodyType,o);let c=ad(n,a.bodyType),l=!1;if(i.body.reportContacts&&!a.reportContacts&&Bf(t,n),a.bodyType!==i.bodyType||c!==i.standIn){for(let e of i.colliders)e&&md(t,e);r.setBodyType(Yu(a.bodyType),!0),l=!0}Zu(r,a,c);let u=!i.scale.equals(s),d=Math.max(o.length,i.colliders.length);for(let c=d-1;c>=0;c--){let d=o[c],f=i.colliders[c],p=i.records[c];if(!d){f&&(md(t,f),t.world.removeCollider(f,!0)),i.colliders.splice(c,1),i.groups.splice(c,1),l=!0;continue}let m=Ru(e,a,d);if(!f){let o=Wu(e,n,a,d,s);if(!o)continue;i.colliders[c]=t.world.createCollider(o,r),i.groups[c]=m,l=!0;continue}let h=u||d.shape!==p?.shape,g=!p||!hd(d,p),_=(p?p.trigger:f.isSensor())!==d.trigger,ee=i.groups[c]!==m;if((h||g||_||ee)&&(md(t,f),l=!0),_&&zf(e,t,f.handle),h||g){Au(n,d,s);let e=Fu(n,d.shape,s);if(!e){t.world.removeCollider(f,!0),i.colliders[c]=void 0;continue}h&&f.setShape(e.shape),Uu(d,e,s),f.setTranslationWrtParent(ku),f.setRotationWrtParent(Ou)}Vu(n,f,e,a,d,m),i.groups[c]=m}return od(r,a,i.colliders,o),(i.colliders.length<o.length||i.colliders.includes(void 0))&&t.changedBodies.add(n),i.bodyType=a.bodyType,i.standIn=c,i.body=a,i.records=[...o],i.scale.copy(s),i.thinnest=td(n,o,s),l}function _d(e,t){let n=!1;return ed.clear(),t.changedBodies.forEach(e=>ed.add(e)),t.changedBodies.clear(),t.bodies.forEach((r,i)=>{if(!i.isAlive())return;let a=i.get(O)?.scale,o=$u.get(r);(ed.has(i)||a!==void 0&&o!==void 0&&!o.scale.equals(a))&&(n=gd(e,t,i,r)||n)}),ed.clear(),n}function vd(e,t,n){let r=t.bodies.get(n),i=n.get(I(il))?.colliders??[],{bodyType:a}=Ju(n);if(!r||!n.isAlive()||!i.every(({shape:e})=>dl(a,e))){t.changedBodies.add(n);return}gd(e,t,n,r)&&(t.fixedChanges++,dd(t))}function yd(e,t,n,r,i,a){let o=E(e)?.get(N)?.handle,s=o?.bodies.get(e),c=s&&$u.get(s),l=c?.colliders[t],u=c?.records[t];o&&c&&l&&u?.shape===n&&(l.setVoxel(i[0],i[1],i[2],a),c.records[t]={...u,shape:r},md(o,l),o.fixedChanges++,dd(o))}function bd(e,t){let n=e.bodies.get(t);if(!n)return!1;for(let t=0;t<n.numColliders();t++)md(e,n.collider(t));return e.world.removeRigidBody(n),e.bodies.delete(t),e.fallen.delete(t),e.changedBodies.delete(t),!0}var xd=!1;function Sd(){xd||(xd=!0,wl(yd),Ec((e,t)=>{let n=e.get(N)?.handle;n&&bd(n,t)&&(n.fixedChanges++,dd(n))}))}function Cd(e,t,n){let r=e.getRigidBody(t)?.userData,i=e.getRigidBody(n)?.userData;return r===void 0||i===void 0?!1:!!r.get(I(tl))?.ignore.includes(i)||!!i.get(I(tl))?.ignore.includes(r)}function wd(e,t,n){let{ActiveHooks:r}=B();if(((t.activeHooks()|n.activeHooks())&r.FILTER_CONTACT_PAIRS)===0)return!1;let i=t.parent(),a=n.parent();return i!==null&&a!==null&&Cd(e,i.handle,a.handle)}function Td(e,t,n){let r=e.getCollider(t)?.solverGroups()??4294967295,i=e.getCollider(n)?.solverGroups()??4294967295;return!!(r>>>16&i&65535)&&!!(i>>>16&r&65535)}var Ed=new WeakMap;function Dd(e){let t=Ed.get(e);if(t)return t;let{SolverFlags:n}=B();return t={filterContactPair:(t,r,i,a)=>Cd(e.world,i,a)?null:Td(e.world,t,r)?n.COMPUTE_IMPULSE:n.EMPTY,filterIntersectionPair:(t,n,r,i)=>!Cd(e.world,r,i)},Ed.set(e,t),t}function Od(e){e.bodies.forEach(e=>{e.isDynamic()&&e.isSleeping()&&$u.get(e)?.body.canSleep===!1&&e.wakeUp()})}var kd=new WeakMap;function Ad(e){let t=kd.get(e);return t||(t=new(B()).EventQueue(!1),kd.set(e,t)),t}function jd(e){kd.get(e)?.free(),kd.delete(e)}var Md=new WeakSet;function Nd(e,t){e.bodies.forEach((e,n)=>{if(!e.isDynamic()||e.isSleeping()||Md.has(e))return;let r=$u.get(e);if(!r||r.standIn||r.body.continuousCollision)return;let{x:i,y:a,z:o}=e.linvel(),s=z(i,a,o)*t;s<=r.thinnest||cr(n,`Entity ${n.id()} moved ${s.toFixed(2)} m in one physics step, farther than its thinnest collider is thick, ${r.thinnest.toFixed(2)} m, so it can pass through a wall as thin: give its body continuousCollision: true.`)&&Md.add(e)})}var Pd=!1,Fd;function Id(e,{position:t,rotation:n}){let r=e.rotation;return e.position.equals(t)&&r.x===n.x&&r.y===n.y&&r.z===n.z&&r.w===n.w}function Ld(e,t){if(!A(t))return;let n=Ku(t),r=$u.get(e);n&&r&&!Id(r,n)&&(e.setTranslation(n.position,!1),e.setRotation(n.rotation,!1),e.isKinematic()&&(e.setNextKinematicTranslation(n.position),e.setNextKinematicRotation(n.rotation)),r.position.copy(n.position),r.rotation.copy(n.rotation),e.isFixed()&&Fd&&Fd.fixedChanges++,Pd=!0)}function Rd(e){return Pd=!1,Fd=e,e.bodies.forEach(Ld),Fd=void 0,Pd&&e.world.propagateModifiedBodyPositionsToColliders(),Pd}function zd(e,t,{position:n,rotation:r}){let i=t.get(O);if(!i)return;n&&i.position.set(n.x,n.y,n.z),r&&i.rotation.set(r.x,r.y,r.z,r.w);let a=e?.bodies.get(t),o=a&&$u.get(a);if(e&&a&&o)return a.setTranslation(i.position,!0),a.setRotation(i.rotation,!0),a.isKinematic()&&(a.setNextKinematicTranslation(i.position),a.setNextKinematicRotation(i.rotation)),o.position.copy(i.position),o.rotation.copy(i.rotation),e.world.propagateModifiedBodyPositionsToColliders(),a.isFixed()&&e.fixedChanges++,dd(e),a}var Bd=new WeakMap;function Vd(e,t){t.bodies.forEach((t,n)=>{if(!n.isAlive()||A(n))return;let r=$u.get(t),i=n.get(O);if(!r||!i||Id(r,i))return;let a=`Entity ${n.id()} has a ${r.bodyType} body and its transform was written directly, which the body does not follow (use-set-next-pose): move a kinematic body with setNextPose(step, entity, { position, rotation }), place any body with teleport(step, entity, { position, rotation }), and push a dynamic one with applyImpulse or applyForce.`;if(e.has(j))throw S(Error(a),`SP0535`,void 0,n);i.position.copy(r.position),i.rotation.copy(r.rotation);let o=Bd.get(e);o||Bd.set(e,o=new Set),!o.has(n)&&(o.add(n),console.error(a))})}function Hd(e){e.forcedBodies.forEach(t=>{let n=e.bodies.get(t);n?.resetForces(!1),n?.resetTorques(!1)}),e.forcedBodies.clear()}function Ud(e,t){if(Bn(e))return;let n=I(al);t.bodies.forEach((e,t)=>{if(!t.isAlive())return;let r=t.get(n);if(e.isFixed()){r&&t.remove(n);return}if(!r){t.add(n),Wd(e,t.get(n));return}r.sleeping&&e.isSleeping()||Wd(e,r)})}function Wd(e,t){t&&(e.linvel(t.linear),e.angvel(t.angular),t.sleeping=e.isSleeping())}function Gd(e){let t=!1;return e.bodies.forEach((n,r)=>{r.isAlive()&&r.has(I(il))&&!r.has(kl)||(t=bd(e,r)||t)}),t}function Kd(e,t){let n=!1;return D(e,id,(r,i)=>{t.bodies.has(i)||(n=sd(e,t,i)||n)}),n}function qd(e){for(let[t,n]of e.bodies){if(n.isFixed()||n.isSleeping()||A(t))continue;let e=t.get(O),r=$u.get(n);e&&r&&(n.translation(e.position),n.rotation(e.rotation),r.position.copy(e.position),r.rotation.copy(e.rotation))}}var Jd=yr(`collisionEntered`,()=>({other:null,otherKey:``,entityKey:``,point:new l,normal:new l,relativeVelocity:new l,impulse:0,colliderIndex:0,otherColliderIndex:0}),{entities:[`other`],delivery:hr.ServerOnly}),Yd=yr(`collisionExited`,()=>({other:null,otherKey:``,entityKey:``}),{entities:[`other`],delivery:hr.ServerOnly}),Xd=yr(`triggerEntered`,()=>({other:null,otherKey:``,entityKey:``,colliderIndex:0}),{entities:[`other`]}),Zd=yr(`triggerExited`,()=>({other:null,otherKey:``,entityKey:``}),{entities:[`other`]}),Qd=new WeakMap;function $d(e){let t=Qd.get(e);return t||Qd.set(e,t={pairs:new Map,touching:new Map,occupants:new Map}),t}function ef(e,t){return e<t?`${e}:${t}`:`${t}:${e}`}var tf=1024,nf=0,rf=new Map;function af(e){nf++,rf.set(e,(rf.get(e)??0)+1)}var of=[];function sf(e,t,n,r){let i=`relativeVelocity`in n?{...n,point:n.point.clone(),normal:n.normal.clone(),relativeVelocity:n.relativeVelocity.clone()}:{...n};of.push({authority:e,event:t,record:i,entity:r}),af(r)}function cf(){let e=of.splice(0);for(let{authority:t,event:n,record:r,entity:i}of e)n===Jd||n===Xd||n===Zd?ei(t,n,r,{entity:i}):ei(t,Yd,r,{entity:i})}var lf={other:null,otherKey:``,entityKey:``,colliderIndex:0},uf={other:null,otherKey:``,entityKey:``},df={other:null,otherKey:``,entityKey:``,point:new l,normal:new l,relativeVelocity:new l,impulse:0,colliderIndex:0,otherColliderIndex:0};function ff(e,t,n,r){let[i,a,o,s,c]=r===1?[n.first,n.second,n.firstKey,n.secondKey,n.firstIndex]:[n.second,n.first,n.secondKey,n.firstKey,n.secondIndex],l=t.occupants.get(i);l||t.occupants.set(i,l=new Map);let u=l.get(a)??0;if(l.set(a,u+1),u>0)return;let d=i.isAlive()&&ir(e,i);d&&(lf.other=a.isAlive()?a:null,lf.otherKey=s,lf.entityKey=o,lf.colliderIndex=c,sf(d,Xd,lf,i))}function pf(e,t,n,r){let[i,a,o,s]=r===1?[n.first,n.second,n.firstKey,n.secondKey]:[n.second,n.first,n.secondKey,n.firstKey],c=t.occupants.get(i),l=c?.get(a)??0;if(c&&l!==0){if(l>1){c.set(a,l-1);return}c.delete(a),c.size===0&&t.occupants.delete(i),mf(e,Zd,i,a,o,s)}}function mf(e,t,n,r,i,a){let o=n.isAlive()&&ir(e,n);o&&(uf.other=r.isAlive()?r:null,uf.otherKey=a,uf.entityKey=i,sf(o,t,uf,n))}function hf(e){return e.isAlive()&&(wc(e,el)?.reportContacts??!1)}var gf=new Map,_f=[],vf=new f,yf=new f,bf=new l;function xf(e,t,n){if(e.isKinematic()&&t>0){let r=e.translation(),i=e.nextTranslation();n[0]=(i.x-r.x)/t,n[1]=(i.y-r.y)/t,n[2]=(i.z-r.z)/t;let a=e.rotation(),o=e.nextRotation();vf.set(a.x,a.y,a.z,a.w),yf.set(o.x,o.y,o.z,o.w).multiply(vf.invert());let s=2*sc(Math.min(1,Math.abs(yf.w)));bf.set(yf.x,yf.y,yf.z),bf.lengthSq()>0&&bf.normalize().multiplyScalar(Math.sign(yf.w||1)*s/t),n[3]=bf.x,n[4]=bf.y,n[5]=bf.z;return}let r=e.linvel(),i=e.angvel();n[0]=r.x,n[1]=r.y,n[2]=r.z,n[3]=i.x,n[4]=i.y,n[5]=i.z}function Sf(e,t){for(let e of gf.values())_f.push(e);gf.clear();let n=!1;e.bodies.forEach(e=>{n||=Hu(e)}),n&&e.bodies.forEach(e=>{if(e.isFixed()||e.isSleeping())return;let n=_f.pop()??new Float64Array(6);xf(e,t,n),gf.set(e.handle,n)})}var Cf=new l,wf=new l,Tf=new l,Ef=new Float64Array(6);function Df(e,t,n,r){if(r.set(0,0,0),!e||e.isFixed())return r;let i=gf.get(e.handle),a=i??Ef;i||xf(e,n,Ef);let o=e.worldCom();return wf.set(t.x-o.x,t.y-o.y,t.z-o.z),Tf.set(a[3],a[4],a[5]).cross(wf),r.set(a[0],a[1],a[2]).add(Tf)}function Of(e,t,n,r,i){let a=!1,o=0;df.point.set(0,0,0),df.normal.set(0,0,0);let s=t.parent(),c=n.parent();if(s&&c)for(let t=0;t<s.numColliders();t++)for(let n=0;n<c.numColliders();n++)e.contactPair(s.collider(t),c.collider(n),e=>{for(let t=0;t<e.numContacts();t++)o+=e.contactImpulse(t)});e.contactPair(t,n,(e,r)=>{if(a||e.numContacts()===0)return;let i=e.numSolverContacts()>0?e.solverContactPoint(0):null;if(i)df.point.set(i.x,i.y,i.z);else{let i=e.localContactPoint1(0),a=r?n:t,o=a.translation(),s=a.rotation();i&&df.point.set(i.x,i.y,i.z).applyQuaternion(vf.set(s.x,s.y,s.z,s.w)).add(Cf.set(o.x,o.y,o.z))}let o=e.normal(),s=r?-1:1;df.normal.set(o.x*s,o.y*s,o.z*s),a=!0}),r===2&&df.normal.negate(),df.impulse=o;let l=r===1?t.parent():n.parent();Df(r===1?n.parent():t.parent(),df.point,i,df.relativeVelocity),df.relativeVelocity.sub(Df(l,df.point,i,Cf))}function kf(e,t,n,r,i,a){let o=ef(r.first,r.second),s=n.touching.get(o)??0;if(n.touching.set(o,s+1),!(s>0))for(let n of[1,2]){let[o,s,c,l,u,d]=n===1?[r.first,r.second,r.firstKey,r.secondKey,r.firstIndex,r.secondIndex]:[r.second,r.first,r.secondKey,r.firstKey,r.secondIndex,r.firstIndex];if(!hf(o))continue;let f=ir(e,o);f&&(Of(t.world,i[0],i[1],n,a),df.other=s.isAlive()?s:null,df.otherKey=l,df.entityKey=c,df.colliderIndex=u,df.otherColliderIndex=d,sf(f,Jd,df,o))}}function Af(e,t,n){let r=ef(n.first,n.second),i=t.touching.get(r)??0;if(i!==0){if(i>1){t.touching.set(r,i-1);return}t.touching.delete(r),hf(n.first)&&mf(e,Yd,n.first,n.second,n.firstKey,n.secondKey),hf(n.second)&&mf(e,Yd,n.second,n.first,n.secondKey,n.firstKey)}}function jf(e,t,n){if(n.triggers===0){Af(e,t,n);return}n.triggers&1&&pf(e,t,n,1),n.triggers&2&&pf(e,t,n,2)}var Mf=[];function Nf(e,t,n){Mf.push(e,t,+!!n)}function Pf(e,t,n,r,i){let a=r?Za(t,r):``,o=Za(t,n);if(i){lf.other=r,lf.otherKey=a,lf.entityKey=o,lf.colliderIndex=0,ei(e,Xd,lf,{entity:n});return}uf.other=r,uf.otherKey=a,uf.entityKey=o,ei(e,Zd,uf,{entity:n})}function Ff(e){return e.parent()?.userData}function If(e,t,n,r,i,a){let o=Ff(r),s=Ff(i);if(o===void 0||s===void 0||o===s)return;let c=ef(r.handle,i.handle);if(n.pairs.has(c))return;let l={firstCollider:r.handle,secondCollider:i.handle,first:o,second:s,firstKey:Za(e,o),secondKey:Za(e,s),firstIndex:ud(r),secondIndex:ud(i),triggers:+!!r.isSensor()|(i.isSensor()?2:0)};if(n.pairs.set(c,l),l.triggers===0){kf(e,t,n,l,[r,i],a);return}l.triggers&1&&ff(e,n,l,1),l.triggers&2&&ff(e,n,l,2)}function Lf(e,t,n,r){if(Hf(),Mf.length=0,n.drainCollisionEvents(Nf),n.clear(),Mf.length===0)return;let i=$d(t);nf=0,rf.clear();for(let n=0;n<Mf.length;n+=3){let a=Mf[n],o=Mf[n+1];if(Mf[n+2]===1){let n=t.world.getCollider(a),s=t.world.getCollider(o);n&&s&&If(e,t,i,n,s,r);continue}let s=ef(a,o),c=i.pairs.get(s);c&&(i.pairs.delete(s),jf(e,i,c))}Rf(e),cf()}function Rf(e){if(nf<=1024||!e.has(j))return;let t,n=0;rf.forEach((e,r)=>{e<=n||(n=e,t=r)}),console.warn(`One physics step emitted ${nf} contact and trigger events, ${n} of them on entity ${String(t)}, past the ${tf} a step warns at: triggers that overlap one another raise an event for each pair, and past the event log's bound the rest are refused. Read who is inside a trigger with readTriggerOccupants, and spread dense triggers apart or give them layers that skip one another.`)}function zf(e,t,n){let r=Qd.get(t);r&&r.pairs.size!==0&&(r.pairs.forEach((t,i)=>{(t.firstCollider===n||t.secondCollider===n)&&(r.pairs.delete(i),jf(e,r,t))}),cf())}function Bf(e,t){let n=Qd.get(e);n&&n.pairs.size!==0&&n.pairs.forEach((e,r)=>{if(e.triggers!==0||e.first!==t&&e.second!==t||hf(e.first)||hf(e.second))return;n.pairs.delete(r);let i=ef(e.first,e.second),a=(n.touching.get(i)??1)-1;a>0?n.touching.set(i,a):n.touching.delete(i)})}var Vf=!1;function Hf(){Vf||(Vf=!0,Ec((e,t)=>{let n=e.get(N)?.handle,r=n&&Qd.get(n);r&&r.pairs.size!==0&&(r.pairs.forEach((n,i)=>{(n.first===t||n.second===t)&&(r.pairs.delete(i),jf(e,r,n))}),cf())}))}var Uf=[];function Wf(e,t){if(Uf.length=0,A(t)){let n=`readTriggerOccupants was handed entity ${t.id()}, a trigger the room streams to this page: who is inside it is the room's to answer. Ask isTouching(step, character, { other: trigger }) for her own character.`;if(e.has(j))throw S(Error(n),`SP0555`,`readTriggerOccupants`);return Uf}let n=e.get(N)?.handle,r=n&&Qd.get(n)?.occupants.get(t);return r&&r.forEach((e,t)=>{t.isAlive()&&Uf.push(t)}),Uf}var Gf=x({speed:1}),Kf=x({height:.2,seconds:2,elapsed:0,offset:0}),qf=x({reward:1,radius:1}),Jf=C(`loot`,{item:``,count:1,radius:1,id:``,data:()=>void 0}),Yf=x(()=>({})),Xf=C(`lock`,{accepts:``,open:!1}),Zf=yr(`taken`),Qf=C(`wallet`,{coins:0}),$f=x({total:0}),ep=C(`interact`,{prompt:``,radius:1.5,near:!1}),tp=yr(`interacted`,()=>({by:null}),{entities:[`by`]}),np=rs({entity:Zo(64)}),rp=us(`behaviours`,`interact`,np),ip=C(`trigger`,{radius:1,inside:!1}),V=x({current:100,maximum:100}),ap=x(),op=x(()=>({source:null})),sp=yr(`died`,()=>({source:null}),{entities:[`source`]}),cp=yr(`damaged`,()=>({amount:0,source:null,weapon:null,zone:null,data:null,at:new l}),{entities:[`source`]}),lp=yr(`healed`,()=>({amount:0,source:null}),{entities:[`source`]}),up=`maxHealth`,dp=C(`chase`,{speed:4,reach:1,walks:!1,reached:null},{entities:[`reached`]}),fp=yr(`chaseReached`,()=>({target:null}),{entities:[`target`]}),pp=yr(`chaseExited`,()=>({target:null}),{entities:[`target`]}),mp=x(()=>({accepts:null}));function hp(e,t){e.has(mp)||e.add(mp);let n=e.get(mp);return n&&(n.accepts=t),()=>{let n=e.get(mp);n?.accepts===t&&(n.accepts=null)}}var gp=Object.freeze({except:Object.freeze([ea.npcs,ea.players])}),_p=Ji({plugin:`behaviours`,name:`spin`,trait:Gf,wiki:`/engine/behaviours/spin/`,description:`Turns an entity round y.`,ranges:{speed:{min:0,max:10,step:.1}},runsOn:k.Client}),vp=Ji({plugin:`behaviours`,name:`bob`,trait:Kf,wiki:`/engine/behaviours/bob/`,description:`Rises and falls an entity in place.`,ranges:{height:{min:0,max:2,step:.05},seconds:{min:.1,max:10,step:.1}},runsOn:k.Client}),yp=Ji({plugin:`behaviours`,name:`pickup`,trait:qf,wiki:`/engine/behaviours/pickup/`,description:`Credits a reward to the character who reaches an entity.`,ai:()=>({is:`a pickup`,actions:[`collect it`]}),ranges:{reward:{min:0,max:100,step:1},radius:{min:0,max:5,step:.1}},runsOn:k.Server}),bp={plugin:`inventory`,trait:Xf,wiki:`/engine/behaviours/inventory/#targets`,description:`Opens to an item that carries every tag it accepts.`,runsOn:k.Server},xp={plugin:`behaviours`,trait:ep,wiki:`/engine/behaviours/interact/`,description:`Shows a prompt and fires a callback while the character is near.`,ai:({prompt:e})=>({actions:e?[e]:[]}),ranges:{radius:{min:0,max:10,step:.1}},runsOn:k.Client},Sp={plugin:`behaviours`,trait:ip,wiki:`/engine/behaviours/trigger/`,description:`Fires a callback while the character stands within a radius.`,handles:[Xd,Zd],ranges:{radius:{min:0,max:10,step:.1}},runsOn:k.Client},Cp=Ji({plugin:`behaviours`,name:`health`,trait:V,wiki:`/engine/behaviours/health/`,description:`Tracks damage, reaps an entity at zero, and downs a character or an entity with a respawn until it comes back.`,ai:({current:e,maximum:t})=>({facts:[e>=t?`unhurt`:e>=t/2?`hurt`:e>=t/4?`badly hurt`:`almost dead`]}),ranges:{current:{min:0,max:1e3,step:1},maximum:{min:1,max:1e3,step:1}},runsOn:k.Server}),wp={plugin:`behaviours`,trait:dp,wiki:`/engine/behaviours/chase/`,description:`Moves an entity toward the nearest character.`,ai:()=>({is:`a pursuer`,facts:[`chasing the nearest character`]}),ranges:{speed:{min:0,max:20,step:.1},reach:{min:0,max:10,step:.1}},runsOn:k.Server},Tp=C(`stats`,()=>({})),Ep={plugin:`stats`,trait:Tp,wiki:`/engine/behaviours/stats/`,description:`Numbers that modifiers raise and lower.`,runsOn:k.Server},H=function(e){return e.Idle=`idle`,e.Run=`run`,e.TurnLeft=`turnLeft`,e.TurnRight=`turnRight`,e.Jump=`jump`,e.RunJump=`runJump`,e.Land=`land`,e}({}),Dp=function(e){return e.Left=`strafeLeft`,e.Right=`strafeRight`,e.Backpedal=`backpedal`,e}({}),Op=C(`playerName`,{name:``}),kp=C(`team`,{name:``,color:``}),Ap=C(`avatar`,{name:``}),jp=C(`pose`,{state:`idle`,landSecondsLeft:0,strafe:!1,pitch:0}),Mp=C(`steer`,()=>new o),U=C(`input`,{buttons:0,axes:()=>[],vectors:()=>[],angles:()=>[],changes:()=>[]},{local:!0}),Np=C(`speedModifiers`,()=>({}),{predicted:!0,anyEntity:!0}),Pp=C(`push`,{velocity:()=>new l,seconds:0,endSpeed:0,priority:0},{predicted:!0,anyEntity:!0}),Fp=C(`downed`),Ip=C(`respawn`,{seconds:5,inPlace:!1,point:()=>new l,clip:``},{local:!0}),Lp=C(`respawning`,{seconds:0,secondsLeft:0}),Rp=C(`disconnected`),zp=C(`disarmed`),Bp=C(`stuck`),W=C(`path`,{corners:()=>[],destination:()=>new l},{predicted:!0,anyEntity:!0,seenByAll:!0}),Vp=function(e){return e.AlwaysAnimate=`alwaysAnimate`,e.CullUpdateTransforms=`cullUpdateTransforms`,e}({}),Hp=function(e){return e.Full=`full`,e.Halved=`halved`,e.Hidden=`hidden`,e}({}),Up=x({vrm:()=>null,mixer:()=>null,clips:()=>new Map,current:()=>null,blend:()=>null,oneShot:()=>null,oneShotPlays:0,upperBody:()=>null,upperBodyMarks:()=>({name:``,marks:[],crossed:0}),armSpread:()=>null,headTurn:()=>null,headAngles:()=>({yaw:0,pitch:0}),clipHeadRotation:()=>null,cullingMode:()=>null,detail:`full`,owedSeconds:0,aim:()=>({weight:0,legYaw:0,backward:!1,clipRotations:new Map}),gripClipRotations:()=>new Map,castAim:()=>({weight:0,heldSeconds:0,request:null,target:null,ability:null,aimEnabled:!1,window:null})}),Wp=x({forward:()=>new l(0,0,-1)}),Gp=x({curl:()=>({thumb:0,index:0,middle:0,ring:0,little:0})}),Kp=C(`aimPoint`,{x:0,y:0,z:0,active:!1}),qp=[`x`,`y`,`z`];function Jp(e,t){if(t===null){e.has(Kp)&&e.set(Kp,{active:!1});return}for(let e of qp)if(!Number.isFinite(t[e]))throw S(Error(`aimAt: the point's ${e} is ${t[e]}; pass finite numbers for x, y and z, such as a target's position, or null to stop aiming`),`SP0049`,`aimAt`);let n={x:t.x,y:t.y,z:t.z,active:!0};e.has(Kp)?e.set(Kp,n):e.add(Kp(n))}var Yp=Object.freeze(new l(1,0,0));Object.freeze(new l(-1,0,0));var Xp=Object.freeze(new l(0,1,0));Object.freeze(new l(0,-1,0));var Zp=Object.freeze(new l(0,0,1)),Qp=Object.freeze(new l(0,0,-1)),$p=function(e){return e.Button=`button`,e.Axis=`axis`,e.Vector=`vector`,e.Angle=`angle`,e}({}),em=96,tm=32,nm=254,rm=127,im=65536;function am({keys:e=[],touch:t,seenByAll:n=!1,edge:r=!1,description:i}={}){return{kind:`button`,keys:e,touch:t,seenByAll:n,edge:r,description:i}}function om(e,t,{keys:n,seenByAll:r=!1,description:i}={}){return{kind:`axis`,min:e,max:t,keys:n,seenByAll:r,description:i}}function sm({keys:e,seenByAll:t=!1,description:n}={}){return{kind:`vector`,keys:e,seenByAll:t,description:n}}function cm({seenByAll:e=!1,description:t}={}){return{kind:`angle`,seenByAll:e,description:t}}function lm({keys:e,touch:t,description:n}){return{keys:e,touch:t,description:n}}function um({priority:e,inputs:t,exclusive:n=!1}){return{priority:e,inputs:t,exclusive:n}}function dm(e,t){return Object.freeze(Object.fromEntries(Object.entries(t).map(([t,n])=>{pm(e,t,`an input context`);let r=`${e}.${t}`;if(!Number.isFinite(n.priority))throw S(Error(`${r} has the priority ${n.priority}: give it a finite number, such as 10.`),`SP0566`,void 0);return[t,Object.freeze({name:r,priority:n.priority,exclusive:n.exclusive,inputs:n.inputs.map(t=>typeof t==`string`?`${e}.${t}`:t.name)})]})))}var fm=/^[A-Za-z][A-Za-z0-9]*$/;function pm(e,t,n){if(!fm.test(t))throw S(Error(`"${t}" cannot name ${n} of ${e}: a name is letters and digits, starting with a letter, as "sprint" is.`),`SP0139`,void 0)}function mm(e,{min:t,max:n}){if(!Number.isFinite(t)||!Number.isFinite(n))throw S(Error(`${e} is an axis from ${t} to ${n}: give it finite ends, such as axisInput(-1, 1).`),`SP0516`,void 0);if(t>=n)throw S(Error(`${e} is an axis from ${t} to ${n}: give it a min below its max, such as axisInput(-1, 1).`),`SP0517`,void 0)}function hm(e,t){return Object.freeze(Object.fromEntries(Object.entries(t).map(([t,n])=>{pm(e,t,`an input`);let r=`${e}.${t}`;return n.kind===`axis`&&mm(r,n),[t,Object.freeze({...n,name:r})]})))}function gm(e,t){return Object.freeze(Object.fromEntries(Object.entries(t).map(([t,n])=>(pm(e,t,`a page action`),[t,Object.freeze({...n,name:`${e}.${t}`})]))))}function _m(e){let t=0,n=0;for(let{kind:r}of e)r===`button`?t++:n+=r===`axis`?1:2;return n+Math.ceil(t/8)}function vm(e){let t=e.flatMap(e=>Object.values(e.inputs)),n=t.filter(({kind:e})=>e===`button`).length;if(n>32)throw S(Error(`The game declares ${n} buttons, past the 32 a tick's input carries, by plugin: ${e.map(e=>({name:e.name,count:Object.values(e.inputs).filter(({kind:e})=>e===`button`).length})).filter(({count:e})=>e>0).map(({name:e,count:t})=>`${e} ${t}`).join(`, `)}. Fold buttons that never act at once into one axis, or move a one-shot to a press.`),`SP0465`,void 0);let r=_m(t);if(r>96){let t=e.map(e=>({name:e.name,share:_m(Object.values(e.inputs))})).filter(({share:e})=>e>0).map(({name:e,share:t})=>`${e} ${t}`);throw S(Error(`The game's inputs take ${r} bytes a tick, past the 96 a tick's input carries, by plugin: ${t.join(`, `)}. A button takes a bit, an axis a byte, a vector or an angle two: fold inputs that never act at once into one, or move a one-shot to a press.`),`SP0466`,void 0)}let i=new Map,a=[],o=[],s=[],c=[],l=0,u=0,d=0;return{entries:t.map(e=>e.kind===`vector`?(i.set(e.name,s.length),s.push(e.seenByAll),{name:e.name,kind:e.kind,...e.keys&&{keys:e.keys},seenByAll:e.seenByAll}):e.kind===`angle`?(i.set(e.name,c.length),c.push(e.seenByAll),{name:e.name,kind:e.kind,seenByAll:e.seenByAll}):e.kind===`button`?(e.seenByAll&&(u=(u|1<<l)>>>0),e.edge&&(d=(d|1<<l)>>>0),i.set(e.name,l++),{name:e.name,kind:e.kind,seenByAll:e.seenByAll,...e.edge&&{edge:!0}}):(i.set(e.name,a.length),a.push(e.seenByAll),o.push(Mm(e)),{name:e.name,kind:e.kind,min:e.min,max:e.max,seenByAll:e.seenByAll})),places:i,buttons:l,axes:a.length,vectors:s.length,angles:c.length,seenVectors:s,seenAngles:c,bytes:r,seenButtons:u,edgeButtons:d,seenAxes:a,axisSides:o}}function ym(e,t,n,r){let i=n,a=r,o=Math.hypot(i,a),s=o>1?1/o:1,c=bm(i*s*127),l=bm(a*s*127);for(;c*c+l*l>16129;){let e=Math.abs(c),t=Math.abs(l);e>=t&&(c-=Math.sign(c)),t>=e&&(l-=Math.sign(l))}e[t]=c,e[t+1]=l}function bm(e){return Math.sign(e)*Math.round(Math.abs(e))}var xm=8,Sm=1024,Cm=2048;function wm(e,t,n){return e*Cm+(t?Sm:0)+n}function Tm(e){return Math.floor(e/Cm)}function Em(e){return e%Cm>=Sm}function Dm(e){return e%Sm}function Om(e,t){if(typeof t!=`boolean`&&!(typeof t==`number`?[t]:[t.x,t.y]).every(Number.isFinite))throw S(Error(`${e} was set to ${typeof t==`number`?t:`{ x: ${t.x}, y: ${t.y} }`}, which is no finite value: check the number before setting it, as a direction from a zero-length vector or a division by 0 gives NaN.`),`SP0467`,void 0)}function km(e){return(Math.round(e/(Math.PI*2)*im)%im+im)%im}function Am(e){return e/im*Math.PI*2}function jm({min:e,max:t}){return Math.min(Math.max(0,e),t)}function Mm(e){let t=jm(e);if(t===e.min)return{negative:0,positive:254};if(t===e.max)return{negative:254,positive:0};let n=Math.min(253,Math.max(1,Math.round(254*(t-e.min)/(e.max-e.min))));return{negative:n,positive:254-n}}function Nm(e,t){let n=jm(e);if(t===0)return n;let{negative:r,positive:i}=Mm(e);return t<0?n+t/r*(n-e.min):n+t/i*(e.max-n)}function Pm(e,t){let n=jm(e);if(!Number.isFinite(t)||(t=Math.min(Math.max(t,e.min),e.max),t===n))return 0;let{negative:r,positive:i}=Mm(e),a=Math.round(t<n?(t-n)/(n-e.min)*r:(t-n)/(e.max-n)*i);return Math.min(Math.max(a,-r),i)}var Fm=vm([]),Im=new WeakMap;function Lm(e,t){Im.set(e,t)}function Rm(e){return Im.get(e)??Fm}var zm=new WeakMap;function Bm(e,t){zm.set(e,new Map(t.map(e=>[e.name,e])))}function Vm(e,t){return zm.get(e)?.get(t)}var Hm=new WeakMap;function Um(e,t){let n=Hm.get(e)??[],r=[...t].sort((e,t)=>t.priority-e.priority);n.length===r.length&&n.every((e,t)=>e===r[t])||Hm.set(e,r)}function Wm(e){return Hm.get(e)??Gm}var Gm=[],Km={up:[`KeyW`,`ArrowUp`],down:[`KeyS`,`ArrowDown`],left:[`KeyA`,`ArrowLeft`],right:[`KeyD`,`ArrowRight`]},qm=[`Space`];function Jm({move:e=Km,jump:t=qm}={}){return{move:sm({keys:e,description:`Steers the character in the camera's view: up walks away from the camera, right to its right; a stick part of the way walks slower.`}),heading:cm({description:`The camera's heading, which the move is read in; the page's camera sets it.`}),pitch:cm({description:`How far the camera looks above level, below level past half a turn; her aim while she strafes. The page's camera sets it.`}),strafe:am({description:`Whether she faces the heading and the move walks her without turning her, as Roblox's shift lock does; the camera's lock sets it.`}),jump:am({keys:t,edge:!0,description:`Jumps the character, or the track mover the player steers.`})}}var Ym=hm(`characters`,Jm()),Xm={walking:um({priority:0,inputs:[`move`,`jump`,`strafe`]})},Zm=dm(`characters`,Xm);function Qm(e){return e>Math.PI?e-Math.PI*2:e}var $m=C(`seenInput`,{buttons:0,axes:()=>[],vectors:()=>[],angles:()=>[]});function eh(e,t){let n=t?.length??0;e.length=n;for(let r=0;r<n;r++)e[r]=t?.[r]??0}function th(e,t){let n=e.get(U);n&&(eh(n.axes,t.axes),eh(n.vectors,t.vectors),eh(n.angles,t.angles),eh(n.changes,t.changes),ah.buttons=t.buttons??0,e.set(U,ah))}function nh(e,t,n){let r=e.places.get(n.name);return r===void 0||!t?hh(n):n.kind===$p.Button?((t.buttons??0)>>>r)%2==1:n.kind===$p.Vector?mh(n.name,t.vectors?.[r*2]??0,t.vectors?.[r*2+1]??0):n.kind===$p.Angle?Am(t.angles?.[r]??0):Nm(n,t.axes?.[r]??0)}function rh(e){let t=E(e);if(!t)return!1;let n=nh(Rm(t),e.get(U),Ym.move);return n.x!==0||n.y!==0}function ih(e,t){let n=e.get(U),r=E(e),i=r&&Rm(r).places.get(t.name);if(!n||i==null)return!1;let a=1<<i;return(n.buttons&a)!==0&&(ah.buttons=(n.buttons&~a)>>>0,e.set(U,ah),!0)}var ah={buttons:0};function oh(e,t){if(t.seenButtons===0&&!t.seenAxes.includes(!0)&&!t.seenVectors.includes(!0)&&!t.seenAngles.includes(!0))return;let n=e.get(U);if(!n)return;let r=(n.buttons&t.seenButtons)>>>0,i=e.get($m),a=!i;i??={buttons:0,axes:[],vectors:[],angles:[]};let o=i.buttons!==r;i.buttons=r,o=sh(i.axes,n.axes,t.seenAxes,1)||o,o=sh(i.vectors,n.vectors,t.seenVectors,2)||o,o=sh(i.angles,n.angles,t.seenAngles,1)||o,a?e.add($m(i)):o&&e.set($m,i)}function sh(e,t,n,r){let i=e.length!==n.length*r;e.length=n.length*r;for(let a=0;a<e.length;a++){let o=n[Math.floor(a/r)]?t[a]??0:0;e[a]!==o&&(i=!0),e[a]=o}return i}function ch(e,t){return!Bn(e)||t.get(xn)?.context===k.Client}function lh(e,t){let n=E(e),r=n?Rm(n):void 0,i=r?.places.get(t.name);if(!n||!r||i===void 0)throw S(Error(`readInput: ${t.name} is no input of the world ${n?`this character stands in`:`of a living character`}: list the plugin that declares it in the game's plugins, and pass a character of that game's world.`),`SP0050`,`readInput`);let a=ch(n,e);if(!a&&!t.seenByAll){if(n.has(j))throw S(Error(`readInput: ${t.name} of a character this page does not steer: her input reaches the room and her own page alone. Declare it seenByAll: true to draw it on every page, or read it in a predicted system, which steps her own character here.`),`SP0051`,`readInput`);return hh(t)}return nh(r,a?e.get(U):e.get($m),t)}var uh=[],dh=[];function fh(e,t,n){let{world:r}=e,i=Rm(r).places.get(n.name);if(i===void 0||n.kind!==$p.Button)throw S(Error(`readInputChanges: ${n.name} is no button of this world: list the plugin that declares it in the game's plugins.`),`SP0531`,`readInputChanges`);if(uh.length=0,!ch(r,t)){if(r.has(j))throw S(Error(`readInputChanges: ${n.name} of a character this page does not steer: her changes reach the room and her own page alone. Read them in a predicted system, which steps her own character here.`),`SP0532`,`readInputChanges`);return uh}let a=t.get(U)?.changes??[],{tick:o}=e;for(let e of a){if(Tm(e)!==i)continue;let t=dh[uh.length];t||dh.push(t={isDown:!1,atSeconds:0}),t.isDown=Em(e),t.atSeconds=(o+Dm(e)/1e3)/60,uh.push(t)}return uh}var ph=new Map;function mh(e,t,n){let r=ph.get(e);return r||ph.set(e,r={x:0,y:0}),r.x=t/127,r.y=n/127,r}function hh(e){return e.kind===$p.Button?!1:e.kind===$p.Vector?mh(e.name,0,0):e.kind===$p.Angle?0:Nm(e,0)}function gh(e,t,n,r){let i=e.places.get(n.name);if(i===void 0)throw S(Error(`${n.name} is no input of this game: list the plugin that declares it in the game's plugins.`),`SP0052`,void 0);if(Om(n.name,r),n.kind===$p.Button){let e=1<<i,n=t.buttons??0;t.buttons=(r?n|e:n&~e)>>>0;return}if(n.kind===$p.Vector){let n=t.vectors??=[];for(;n.length<e.vectors*2;)n.push(0);let{x:a,y:o}=r;ym(n,i*2,a,o);return}if(n.kind===$p.Angle){let n=t.angles??=[];for(;n.length<e.angles;)n.push(0);n[i]=km(Number(r));return}let a=t.axes??=[];for(;a.length<e.axes;)a.push(0);a[i]=Pm(n,Number(r))}function _h(e){return e.flat=0,e.percent=0,e.more=1,e}function vh(e,t){for(let n of t)e.flat+=n.flat??0,e.percent+=n.percent??0,e.more*=1+(n.more??0)}function yh(e,t){return(e+t.flat)*(1+t.percent)*t.more}var bh={flat:0,percent:0,more:1};function xh({base:e,min:t,max:n,modifiers:r}){vh(_h(bh),r);let i=yh(e,bh);return Math.min(Math.max(i,t??-1/0),n??1/0)}function Sh(e,t){let n=Ch(e)[t];return n&&xh(n)}function Ch(e){return Object.assign(Object.create(null),e.get(Tp))}function wh(e,t){e.has(Tp)?e.set(Tp,t):e.add(Tp(t))}function Th(e,t){let n=Ch(e);for(let[e,r]of Object.entries(t))n[e]={...r,modifiers:n[e]?.modifiers??[]};wh(e,n)}function Eh(e,t,n){Hi(E(e),`stats`);let r=Ch(e)[t];Th(e,{[t]:{...r,base:n}})}function Dh(e,t,n){Hi(E(e),`stats`);let r=Ch(e),i=r[t]??{base:0,modifiers:[]};r[t]={...i,modifiers:[...i.modifiers,{...n}]},wh(e,r)}function Oh(e,t){let n=e.get(Tp);if(!n)return;let r=Ch(e);for(let[e,i]of Object.entries(n))r[e]={...i,modifiers:t(i.modifiers)};e.set(Tp,r)}function kh(e,t){Hi(E(e),`stats`);let n=e.get(Tp);n&&Object.values(n).some(e=>e.modifiers.some(e=>e.source===t))&&Oh(e,e=>e.filter(e=>e.source!==t))}function Ah(e){let t={};for(let[n,{base:r,modifiers:i}]of Object.entries(Ch(e)))t[n]={base:r,modifiers:i.filter(e=>e.seconds===void 0).map(e=>({...e}))};return t}function jh(e,t){let n=Ch(e);for(let[e,{base:r,modifiers:i}]of Object.entries(t)){let t=n[e];n[e]={...t,base:r??t?.base??0,modifiers:i.map(e=>({...e}))}}wh(e,n)}var Mh=y(Tp);function Nh(e){return e.modifiers.some(e=>e.seconds!==void 0)}function Ph(e,t){if(!e.has(zn))for(let n of e.query(Mh)){let e=n.get(Tp);e&&Object.values(e).some(Nh)&&Oh(n,e=>e.flatMap(e=>{if(e.seconds===void 0)return[e];let n=e.seconds-t;return n<t/2?[]:[{...e,seconds:n}]}))}}var Fh=new Map,Ih=new WeakMap;function Lh(e,t,n){let r=St(t);Fh.set(r,{...Fh.get(r),[n]:e});let i={};return Ih.set(r,{...Ih.get(r),[n]:i}),()=>{let{[n]:e,...t}=Ih.get(r)??{};if(e!==i)return;Ih.set(r,t);let a={...Fh.get(r)};delete a[n],Object.keys(a).length?Fh.set(r,a):Fh.delete(r)}}function Rh(e){return Fh.get(e)??{}}function zh(e,t){let{rerunEntity:n}=t;if(n){for(let[e,t]of Fh)n.has(Tp)&&n.has(e)&&Bh(n,e,t);return}for(let[t,n]of Fh)for(let r of e.query(Tp,t))A(r)||Bh(r,t,n)}function Bh(e,t,n){for(let r in n){let i=Sh(e,n[r]);i!==void 0&&i!==pn(e,t,r)&&e.set(t,{[r]:i})}}var Vh={speed:5,acceleration:50,deceleration:60,turnRate:25,turnInPlace:!1,turnAngle:60,standTurnRate:5.5,maximumTurnSeconds:.3,standingShare:.05},Hh=function(e){return e.Responsive=`responsive`,e.Realistic=`realistic`,e}({}),Uh={responsive:Vh,realistic:{...Vh,acceleration:15,deceleration:15,turnRate:15,turnInPlace:!0}};function Wh(e,t={}){let n={...e};for(let[e,r]of Object.entries(t))r!==void 0&&Object.assign(n,{[e]:r});return n}var Gh=C(`movement`,{...Vh}),Kh=`moveSpeed`;Lh(Kh,Gh,`speed`);var qh=[];function Jh(e,t){let n=e.get(Np),r=t;if(n){qh.length=0;for(let e in n)qh.push(e);qh.sort();for(let e of qh)r*=1+n[e].more}let i=e.get(Tp)?.[Kh]?.max;return Math.max(0,i===void 0?r:Math.min(r,i))}function Yh(e){return Jh(e,pn(e,Gh,`speed`)??Vh.speed)}var Xh=x(()=>({position:new l,facing:0,health:{...V.schema},movement:{...Vh},body:{...Mi},controller:{...Fi},avatar:``,respawn:{},props:{}})),Zh={plugin:`characters`,trait:Gh,wiki:`/engine/entities/player/`,description:`How the player runs, stops and turns.`,ranges:{speed:{min:0,max:20,step:.1},acceleration:{min:1,max:200,step:1},deceleration:{min:1,max:200,step:1},turnRate:{min:1,max:50,step:.5},turnAngle:{min:0,max:180,step:1},standTurnRate:{min:.5,max:20,step:.1},maximumTurnSeconds:{min:.05,max:2,step:.05},standingShare:{min:0,max:.5,step:.01}},runsOn:k.Both};function Qh(e,t){return e/t}function $h(e){return z(e.x,e.z)}var eg=new l,tg=new f,ng=new f,rg=new l,ig=new f,ag=new f,og=new l;function sg(e,t,n,r){ng.copy(t).invert().multiply(n),e.side=(ng.w<0?-ng.y:ng.y)>=0?En.Left:En.Right,e.target.copy(n),e.turnSeconds=r,e.turnSecondsLeft=r}function cg(e){let t=e.get(Kp),n=e.get(O)?.position;return!t?.active||!n||(og.set(t.x-n.x,0,t.z-n.z),og.lengthSq()===0)?null:ag.setFromUnitVectors(Qp,og.normalize())}var lg=y(Mp,U,Sn,Dn,O);function ug(e,{deltaSeconds:t,character:n}){let r=!1,i=(e,n,i,{turnInPlace:a,turnAngle:o,standTurnRate:s,maximumTurnSeconds:c})=>{if(r||(e.armed=!0),e.turnSecondsLeft===0){if(!r||!a||!e.armed||!i)return;let t=Dl(n,tg);if(t<=_.degToRad(o))return;e.armed=!1,sg(e,n,tg,Math.min(t/s,c))}let l=Dl(n,e.target),u=e.turnSecondsLeft>t?l*t/e.turnSecondsLeft:l;e.turnSecondsLeft=Math.max(0,e.turnSecondsLeft-t),Ol(n,e.target,u)},a=Rm(e);dn(e,lg,([e,o,s,c,{rotation:l}],u)=>{if(A(u)||n&&u!==n)return;if((pn(u,Pp,`seconds`)??0)>0){let e=pn(u,Pp,`velocity`);e&&s.set(e.x,s.y,e.z);return}let d=nh(a,o,Ym.heading),f=nh(a,o,Ym.strafe),p=u.get(Gh)??Vh,{acceleration:m,deceleration:h,turnRate:g}=p,ee=Jh(u,p.speed);eg.set(e.x,0,-e.y);let te=Math.min(eg.length(),1);Tl(d,ig),eg.normalize().applyQuaternion(ig),r=te>0,r&&tg.setFromUnitVectors(Qp,eg);let v=$h(s),ne=u.get(M)?.isGrounded??!0,re=v<p.speed*p.standingShare&&ne,ie=cg(u);f||ie?(Ol(l,ie??ig,g*t),c.turnSecondsLeft=0):i(c,l,re,p);let ae=r&&c.turnSecondsLeft===0,oe=ae?ee*te:0,y=m*t,se=h*t,ce=v+_.clamp(oe-v,-se,y);ae&&(f||ie)?(rg.copy(eg).multiplyScalar(ce),s.set(rg.x,s.y,rg.z)):ae?(Ol(l,tg,g*t),rg.copy(Qp).applyQuaternion(l).multiplyScalar(ce),s.set(rg.x,s.y,rg.z)):v>0&&(s.x*=ce/v,s.z*=ce/v)})}var dg=new WeakMap;function fg(e,t){dg.set(e,t)}function pg(e,t,n){let r=wt(t);for(let t of dg.get(e)??[])t(r,n)}var mg=t(((e,t)=>{(function(n,r){typeof e==`object`?t.exports=r():typeof define==`function`&&define.amd?define(r):n.Alea=r()})(e,function(){return e.importState=function(t){var n=new e;return n.importState(t),n},e;function e(){return function(e){var n=0,r=0,i=0,a=1;e.length==0&&(e=[+new Date]);var o=t();n=o(` `),r=o(` `),i=o(` `);for(var s=0;s<e.length;s++)n-=o(e[s]),n<0&&(n+=1),r-=o(e[s]),r<0&&(r+=1),i-=o(e[s]),i<0&&(i+=1);o=null;var c=function(){var e=2091639*n+a*23283064365386963e-26;return n=r,r=i,i=e-(a=e|0)};return c.next=c,c.uint32=function(){return c()*4294967296},c.fract53=function(){return c()+(c()*2097152|0)*11102230246251565e-32},c.version=`Alea 0.9`,c.args=e,c.exportState=function(){return[n,r,i,a]},c.importState=function(e){n=+e[0]||0,r=+e[1]||0,i=+e[2]||0,a=+e[3]||0},c}(Array.prototype.slice.call(arguments))}function t(){var e=4022871197,t=function(t){t=t.toString();for(var n=0;n<t.length;n++){e+=t.charCodeAt(n);var r=.02519603282416938*e;e=r>>>0,r-=e,r*=e,e=r>>>0,r-=e,e+=r*4294967296}return(e>>>0)*23283064365386963e-26};return t.version=`Mash 0.9`,t}})})),hg=new l,gg=new l;function _g(e,t){return Math.sqrt(Math.sqrt(e.distanceToSquared(t)))}function vg([e,t,n,r],[i,a,o],s){let c=((t-e)/i-(n-e)/(i+a)+(n-t)/a)*a,l=((n-t)/a-(r-t)/(a+o)+(r-n)/o)*a,u=-3*t+3*n-2*c-l,d=2*t-2*n+c+l,f=s*s,p=f*s;return t+c*s+u*f+d*p}var yg=class extends r{points;constructor(e){super(),this.points=e}getPoint(e,t=new l){let{points:n}=this,r=n.length,i=(r-1)*e,a=Math.floor(i),o=i-a;o===0&&a===r-1&&(a=r-2,o=1);let s=a>0?n[a-1]:hg.subVectors(n[0],n[1]).add(n[0]),c=n[a],u=n[a+1],d=a+2<r?n[a+2]:gg.subVectors(n[r-1],n[r-2]).add(n[r-1]),f=_g(c,u);f<1e-4&&(f=1);let p=_g(s,c);p<1e-4&&(p=f);let m=_g(u,d);m<1e-4&&(m=f);let h=[p,f,m];return t.set(vg([s.x,c.x,u.x,d.x],h,o),vg([s.y,c.y,u.y,d.y],h,o),vg([s.z,c.z,u.z,d.z],h,o))}},bg=e(mg(),1),xg=1.5,Sg=16,Cg=1e-6;function wg({halfWidth:e,fade:t,surface:n,points:r}){let i=new yg(r.map(([e,t])=>new l(e,0,t))),a=i.getSpacedPoints(Math.max(1,Math.round(i.getLength()))),o=[];for(let e=1;e<a.length;e++){let t=a[e-1],n=a[e].x-t.x,r=a[e].z-t.z,i=n*n+r*r;i!==0&&o.push({startX:t.x,startZ:t.z,deltaX:n,deltaZ:r,inverseLengthSquared:1/i})}let s=[];for(let e=0;e<o.length;e+=Sg){let t=Math.min(e+Sg,o.length),n={minX:1/0,minZ:1/0,maxX:-1/0,maxZ:-1/0,start:e,end:t};for(let r=e;r<t;r++){let{startX:e,startZ:t,deltaX:i,deltaZ:a}=o[r];for(let[r,o]of[[e,t],[e+i,t+a]])n.minX=Math.min(n.minX,r-Cg),n.minZ=Math.min(n.minZ,o-Cg),n.maxX=Math.max(n.maxX,r+Cg),n.maxZ=Math.max(n.maxZ,o+Cg)}s.push(n)}return{halfWidth:e,fade:t,surface:n,segments:o,chunks:s}}var Tg={x:0,z:0,distance:1/0};function Eg(e,{x:t,z:n},r=1/0){let i=r*r;for(let r of e.chunks){let e=Math.max(t-r.minX,r.maxX-t),a=Math.max(n-r.minZ,r.maxZ-n);i=Math.min(i,e*e+a*a)}let a=1/0;Tg.x=t,Tg.z=n;for(let r of e.chunks){let o=Math.max(r.minX-t,0,t-r.maxX),s=Math.max(r.minZ-n,0,n-r.maxZ),c=o*o+s*s;if(!(c>a||c>i))for(let i=r.start;i<r.end;i++){let r=e.segments[i],o=_.clamp(((t-r.startX)*r.deltaX+(n-r.startZ)*r.deltaZ)*r.inverseLengthSquared,0,1),s=r.startX+o*r.deltaX,c=r.startZ+o*r.deltaZ,l=t-s,u=n-c,d=l*l+u*u;d<a&&(a=d,Tg.x=s,Tg.z=c)}}return Tg.distance=Math.sqrt(a),Tg}var Dg=0x56bc75e2d63100000;function Og(e,t,n,r,i){let a=(t,n)=>(e[t]+t*t-(e[n]+n*n))/(2*t-2*n),o=0;r[0]=0,i[0]=-1/0,i[1]=1/0;for(let e=1;e<t;e++){let t=a(e,r[o]);for(;t<=i[o];)t=a(e,r[--o]);r[++o]=e,i[o]=t,i[o+1]=1/0}o=0;for(let a=0;a<t;a++){for(;i[o+1]<a;)o++;let t=a-r[o];n[a]=t*t+e[r[o]]}}function kg(e,t){let n=new Float64Array(e.length);for(let t=0;t<e.length;t++)n[t]=e[t]?0:Dg;let r=new Float64Array(t),i=new Float64Array(t),a=new Int32Array(t),o=new Float64Array(t+1);for(let e=0;e<t;e++){for(let i=0;i<t;i++)r[i]=n[i*t+e];Og(r,t,i,a,o);for(let r=0;r<t;r++)n[r*t+e]=i[r]}let s=new Float64Array(e.length);for(let e=0;e<t;e++){r.set(n.subarray(e*t,(e+1)*t)),Og(r,t,i,a,o);for(let n=0;n<t;n++)s[e*t+n]=i[n]>=Dg/2?1/0:Math.sqrt(i[n])}return s}function Ag(e=_e,t){let n=ge.parse(e),{seed:r,size:i,cell:a,regions:o,rim:s}=n;if(t??=n.terrain,t&&(t.size!==i||t.cell!==a))throw S(Error(`The map's terrain holds a ${t.size} m grid at ${t.cell} m cells, but the map is ${i} m at ${a} m: run spawnite map terrain resample to rewrite it at the map's grid.`),`SP0102`,`createGroundSurface`);let c=new Te({random:(0,bg.default)(r)}),u=i/a,d=u+1,f=i/2;function p({x:e,z:t,hills:{amplitude:n,wavelength:r,detail:i},withDetail:a}){let o=e/r,s=t/r;return(c.noise(o,s)+1+(a?(c.noise(o*2,s*2)+1)*i:0))*(n/2)}function h({center:e,radius:t,fade:n},{x:r,z:i}){return 1-_.smoothstep(z(r-e[0],i-e[1]),t,t+n)}function g({x:e,z:t,withDetail:r}){let i=p({x:e,z:t,hills:n.hills,withDetail:r});for(let n of Object.values(o)){let{hills:a}=n,o=h(n,{x:e,z:t});o>0&&(i=_.lerp(i,p({x:e,z:t,hills:a,withDetail:r}),o))}return i}let ee=Object.values(n.paths).map(wg);function te(e,t){return 1-_.smoothstep(Eg(e,t,e.halfWidth+e.fade).distance,e.halfWidth,e.halfWidth+e.fade)}let v=new Float64Array(d*d);for(let e=0;e<d;e++){let t=e*a-f;for(let n=0;n<d;n++){let r=n*a-f,i=g({x:r,z:t,withDetail:!0}),o=0,c=r,l=t;for(let e of ee){let n=te(e,{x:r,z:t});n>o&&(o=n,c=Tg.x,l=Tg.z)}o>0&&(i=_.lerp(i,g({x:c,z:l,withDetail:!1}),o)),s>0&&(i+=_.smoothstep(Math.max(Math.abs(r),Math.abs(t)),f-s,f)*xg),v[e*d+n]=i}}let ne=v.slice(),re=xe(t?.height,d);for(let e=0;e<v.length;e++)Number.isNaN(re[e])||(v[e]+=re[e]);let ie=new m(new l,Zp,Yp),ae=new l,oe=new l,y=new l,se=new l,ce=new l,le=new l;function b(e){let t=_.clamp((e.x+i/2)/a,0,u),n=_.clamp((e.z+i/2)/a,0,u),r=Math.min(Math.floor(t),u-1),o=Math.min(Math.floor(n),u-1),s=t-r,c=n-o,l=s+c<=1?0:1;ie.a.set(l,0,l),ae.set(l*a,v[(o+l)*d+r+l],l*a),oe.set(0,v[(o+1)*d+r],a),y.set(a,v[o*d+r+1],0),se.set(s,0,c)}let x=1/0;for(let e of ne)x=Math.min(x,e);let ue=n.sea??x-1,de=1/0;for(let e of v)de=Math.min(de,e);let fe=de>=ue,pe;function me(){let e=new Uint8Array(v.length);for(let t=0;t<v.length;t++)e[t]=+(v[t]<ue);let t=kg(e,d);for(let e=0;e<t.length;e++)t[e]*=a;return t}function he(e){return b(e),ie.getInterpolation(se,ae,oe,y,ce),ce.y}let ve=e=>!fe&&he(e)<ue;function ye(e,t){return b(e),m.getNormal(ae,oe,y,t),t.y<0&&t.negate(),t}return Object.freeze({map:n,seed:r,size:i,cell:a,segments:u,terrain:t,baseHeights:ne,offsets:re,getHeightAt:he,getPointAt(e,t){let{x:n,z:r}=e,i=Math.min(Math.max((n+f)/a,0),u),o=Math.min(Math.max((r+f)/a,0),u),s=Math.min(Math.floor(i),u-1),c=Math.min(Math.floor(o),u-1),l=i-s,p=o-c,m=c*d+s,h=m+d;return t.x=n,t.y=l+p<=1?v[m]+l*(v[m+1]-v[m])+p*(v[h]-v[m]):v[h+1]+(1-l)*(v[h]-v[h+1])+(1-p)*(v[m+1]-v[h+1]),t.z=r,t},getNormalAt:ye,sea:ue,isUnderWaterAt:ve,getShoreDistanceAt(e){if(fe)return 1/0;if(ve(e))return 0;pe??=me();let t=_.clamp((e.x+f)/a,0,u),n=_.clamp((e.z+f)/a,0,u),r=Math.min(Math.floor(t),u-1),i=Math.min(Math.floor(n),u-1),o=t-r,s=n-i,c=(e,t)=>pe[(i+e)*d+r+t];return _.lerp(_.lerp(c(0,0),c(0,1),o),_.lerp(c(1,0),c(1,1),o),s)},getSlopeAt(e){return ye(e,le),z(le.x,le.z)/le.y},getPathDistanceAt(e){let t=1/0;for(let n of ee)t=Math.min(t,Math.max(0,Eg(n,e).distance-n.halfWidth));return t},getPathSurfaceAt(e){let t;for(let n of ee){let{surface:r}=n;if(!r)continue;let i=te(n,e);i>(t?.weight??0)&&(t={surface:r,weight:i})}return t},getRegionWeightsAt(e){return Object.values(o).map(t=>h(t,e))}})}var jg={ground:[174,184,154],grid:[107,120,91],sky:14674431,groundBounce:5134906,sun:16774368,moon:11058408,skyTint:2776244,cloudNight:3291986,placeholderBody:5996484,destinationMarker:16757575,destinationLight:10479871,targetHostile:16730685,targetNeutral:16767050,targetFriendly:6018154,brushCursor:16761165,brushLower:16738877,brushSmooth:11844292,maskEmpty:0,maskFull:16777215},Mg=24,Ng={sunIntensity:2,moonIntensity:1.2,skyIntensity:1.2,tintStrength:.7,dayCycle:{hoursPerCycle:Mg,daylightHours:20,realSecondsPerCycle:1200,startHour:10,peakElevation:_.degToRad(55),noonAzimuth:_.degToRad(75),twilightDepth:_.degToRad(12),nightExposure:.25,nightFill:.7,warmthExponents:{green:.25,blue:.6}},shadow:{halfWidth:14,depth:40,normalBias:.02,radius:2,mapSize:1024},sky:{distance:45e4,turbidity:6,rayleigh:.5,mieCoefficient:.005,mieDirectionalG:.8},clouds:{textureSize:256,clumping:.5,clumpCells:3,softness:.15,scale:80,drift:{x:.0125,y:.025},hourOffset:{x:11/Mg,y:17/Mg},speed:1,fade:{gone:_.degToRad(8),full:_.degToRad(35)},sunLift:_.degToRad(6),decks:[{name:`skyCloudsFar`,renderOrder:2,cells:13,coverage:.4,height:52,opacity:.45},{name:`skyCloudsNear`,renderOrder:3,cells:8,coverage:.35,height:40,opacity:.85}]},horizonBand:{peak:.55,noonShare:.3,span:.25}},Pg={tint:{name:`skyTint`,renderOrder:1},band:{name:`skyBand`,renderOrder:4}},Fg={direction:new l,sunIntensity:0,moonDirection:new l,moonIntensity:0,skyIntensity:0,tintStrength:0,bandColor:new p,cloudColor:new p,bandShare:0,exposure:0},Ig=new p;function Lg(e,t=Ng){let{hoursPerCycle:n,daylightHours:r,peakElevation:i,noonAzimuth:a,twilightDepth:o,nightExposure:s,nightFill:c,warmthExponents:l}=t.dayCycle,u=_.euclideanModulo(e,n),d=u<r?Math.PI*u/r:Math.PI+Math.PI*(u-r)/(n-r),f=i*Math.sin(d);Fg.direction.setFromSphericalCoords(1,Math.PI/2-f,a-Math.PI/2+d);let p=_.clamp(Math.sin(f)/Math.sin(i),0,1),m=Fg.bandColor.set(jg.sun);m.g*=p**+l.green,m.b*=p**+l.blue;let h=_.clamp(1+f/o,0,1),g=_.clamp(Math.sin(f+t.clouds.sunLift)/Math.sin(i),0,1);Ig.set(jg.sun),Ig.g*=g**+l.green,Ig.b*=g**+l.blue,Fg.cloudColor.set(jg.cloudNight).lerp(Ig,h);let{noonShare:ee}=t.horizonBand;return Fg.sunIntensity=t.sunIntensity*p,Fg.moonDirection.copy(Fg.direction).negate(),Fg.moonIntensity=t.moonIntensity*_.clamp(-Math.sin(f)/Math.sin(i),0,1),Fg.skyIntensity=Math.max(t.skyIntensity*p,c),Fg.tintStrength=t.tintStrength*p,Fg.bandShare=_.lerp(1,ee,p)*h,Fg.exposure=_.lerp(s,1,h),Fg}var Rg=x({surface:Ag}),zg=x({name:``}),Bg=x({ground:()=>null});qe(Bg,[`ground`]);var Vg=x({placements:()=>[]}),Hg=x({object:()=>null}),Ug=x({bvh:()=>null}),Wg=x({handle:()=>null}),Gg=x(()=>({now:()=>performance.now(),milliseconds:0})),Kg=C(`dayClock`,{hour:Ng.dayCycle.startHour,realSecondsPerCycle:Ng.dayCycle.realSecondsPerCycle}),qg=x({count:0}),Jg=x({ids:()=>[],current:``,finished:()=>({})}),Yg=x(()=>[]);function Xg(e,t){return e.has(Yg)?e.set(Yg,t):e.add(Yg(t)),()=>{e.get(Yg)===t&&e.remove(Yg)}}var Zg=function(e){return e.Player=`player`,e.Bot=`bot`,e}({}),Qg=function(e){return e.Connected=`connected`,e.Held=`held`,e}({}),$g=function(e){return e.Left=`left`,e.HoldEnded=`hold-ended`,e.Kicked=`kicked`,e.RoomClosing=`room-closing`,e}({}),e_=function(e){return e.HookFaulted=`hook-faulted`,e.SaveRefused=`save-refused`,e}({}),t_=Sc(C(`player`,{account:``,name:``,seat:0,role:`player`,avatar:``})),n_=Sc(C(`connection`,{state:`connected`,holdEndsTick:-1})),r_=Yl(async()=>{let e=await we(()=>import(`./BZ67u85L.js`),__vite__mapDeps([2,1,3,4,5,6,7,8]),import.meta.url);return await e.core.init(),e},`recast is not loaded yet: await loadRecast() before calling it, or mount a <World>, whose navmesh loads it.`),i_=r_.load,a_=r_.read;function o_({ground:e,obstacles:t,colliders:n=null,body:r}){let i=r.radius,a=i/2,o=[e];for(let e of[t,n])e&&o.push(new s(e));let{core:c,three:l}=a_(),u=l.threeToSoloNavMesh(o,{cs:i,ch:a,walkableRadius:Math.ceil(r.radius/i),walkableClimb:Math.floor(r.step/a),walkableHeight:Math.ceil(r.height/a)});if(!u.success)throw S(Error(`The navmesh bake failed: ${u.error}. Check that the ground has faces a walker can stand on, and that the walker's radius, height and step fit them.`),`SP0103`,void 0);return{navMesh:u.navMesh,query:new c.NavMeshQuery(u.navMesh)}}var s_=.5;function c_(e,t){e.updateWorldMatrix(!0,!1);let{geometry:n,matrixWorld:r}=e,i=n.getAttribute(`position`),a=new Float32Array(i.count),o=new l;for(let e=0;e<i.count;e++)a[e]=o.fromBufferAttribute(i,e).applyMatrix4(r).y;let{index:c}=n,d=c?c.count:i.count,f=[];for(let e=0;e<d;e+=3){let[n,r,i]=[e,e+1,e+2].map(e=>c?c.getX(e):e);Math.min(a[n],a[r],a[i])>=t&&f.push(n,r,i)}if(f.length===d)return e;if(f.length===0)return null;let p=new u;p.setAttribute(`position`,i),p.setIndex(f);let m=new s(p);return m.matrixAutoUpdate=!1,m.matrix.copy(r),m.matrixWorld.copy(r),m}var l_=function(e){return e.NoNavMesh=`no-navmesh`,e.NoCharacter=`no-character`,e.NotWalker=`not-walker`,e.StartOffMesh=`start-off-mesh`,e.DestinationOffMesh=`destination-off-mesh`,e.NoRoute=`no-route`,e.NoMovement=`no-movement`,e}({});function u_({query:e},{from:t,to:n}){let r=e.findNearestPoly(t).nearestRef;if(!r)return{refusal:`start-off-mesh`};let i=e.findNearestPoly(n).nearestRef;if(!i)return{refusal:`destination-off-mesh`};let a=e.findPath(r,i,t,n),o=a.success&&a.polys.size>0&&a.polys.get(a.polys.size-1)===i;a.polys.destroy();let{success:s,path:c}=e.computePath(t,n);return s?{corners:c.map(({x:e,y:t,z:n})=>new l(e,t,n)),partial:!o}:{refusal:`no-route`}}function d_({navMesh:e,query:t}){t.destroy(),e.destroy()}function f_(e,t){let{x:n,y:r,z:i}=t.position;return e.spawn(jp,W,Mp,U,M,Pi,O(bn({position:new l(n,r,i),rotation:Tl(t.facing)})),Sn,Dn({target:Tl(t.facing)}),Gh)}function p_(e,t,n={}){Hi(e,`characters`);let r=f_(e,t),{x:i,y:a,z:o}=t.position;return r.add(w,V(t.health),Tp({[up]:{base:t.health.maximum,min:1,modifiers:[]}}),Ip({point:new l(i,a,o)}),Np,Pp,Tn),pg(e,r,n),r}function m_(e){return pn(e,xn,`context`)===k.Client}var h_=y(w),g_=y(w,xn);function __(e){return e.has(jp)&&m_(e)}var v_=y(Qf,xn);function y_(e){return pn(e,xn,`context`)===k.Client}function b_(e){return fn(e,g_,__)??fn(e,g_,m_)??(e.queryFirst(I(t_))?void 0:fn(e,h_))}function x_(e){return b_(e)??fn(e,v_,y_)}function S_(e,t,n=b_(e)){Ui(e,`characters`,`characters.movement`);let r=e.queryFirst(Wg)?.get(Wg)?.handle;if(!r)return{refusal:l_.NoNavMesh};if(!n)return{refusal:l_.NoCharacter};let i=n.get(O)?.position;if(!i||!n.has(W))return{refusal:l_.NotWalker};let a=u_(r,{from:i,to:t});return a.refusal||n.set(W,{corners:a.corners,destination:t.clone()}),a}var C_=x(()=>({frustum:new te,view:new d,scale:1,perspective:!0})),w_=new d,T_=new a,E_=new l;function D_(e,t){e.has(C_)||e.add(C_);let n=e.get(C_);if(!n)return;let{projectionMatrix:r,matrixWorldInverse:i}=t;n.view.copy(i),n.frustum.setFromProjectionMatrix(w_.multiplyMatrices(r,i));let{elements:a}=r;n.scale=a[5],n.perspective=a[11]!==0}function O_(e,t,n){return T_.center.copy(t),T_.radius=n,e.frustum.intersectsSphere(T_)}function k_(e,t,n){if(!O_(e,t,n))return 0;if(!e.perspective)return n*e.scale;let r=-E_.copy(t).applyMatrix4(e.view).z;return n*e.scale/Math.max(r,n)}function A_(e,t,{enter:n,leave:r}){return t>=(e?r:n)}var j_=1e-5;function M_({motion:e,centre:t,target:n,deltaSeconds:r,gravity:i,jumpHeight:a},o){o.x=n.x-t.x,o.z=n.z-t.z;let s=a>0;return e.grounded&&e.floorRead&&!s&&z(o.x,o.z)<1e-5?!1:(s&&(e.fallSpeed=Math.sqrt(2*i*a)),e.fallSpeed-=i*r,o.y=e.fallSpeed*r,!0)}var N_=y(Rg),P_=y(I(il)),F_=y(zi);function I_(e){return fn(e,N_)!==void 0||fn(e,P_)!==void 0}var L_=new WeakSet,R_;function z_(e){nu()||L_.has(e)||(L_.add(e),tu().then(()=>L_.delete(e),t=>{L_.delete(e),R_=S(Error(`Rapier, the physics, failed to load, so no body can step: check the network and that the engine's rapier folder ships with the build.`,{cause:t}),`SP0433`,void 0)}))}function B_(){if(R_)throw R_}function V_(e){return L_.has(e)}var H_=new l;function U_(e){let t=fn(e,F_)?.get(zi)?.value;if(t)return H_.copy(t);let[n,r,i]=xt(e).gravity;return H_.set(n,r,i)}function W_(e,t){let n=or(e,`setGravity`),r=new l(t.x,t.y,t.z),i=fn(n,F_);i?i.set(zi,{value:r}):n.spawn(zi({value:r}))}function G_(e){return or(e,`findRapierWorld`).get(N)?.handle?.world??null}var K_=function(e){return e.NotDynamic=`not-dynamic`,e.NotKinematic=`not-kinematic`,e.UseSetNextPose=`use-set-next-pose`,e}({}),q_=new WeakMap,J_=!1;function Y_(e,t,n){J_||(J_=!0,Ec((e,t)=>q_.get(e)?.delete(t)));let r=q_.get(e);r||q_.set(e,r=new Map);let i=r.get(t);i?i.push(n):r.set(t,[n])}function X_(e,t){let n=q_.get(e);n&&n.size!==0&&n.forEach((r,i)=>{let a=t.bodies.get(i);if(!a){i.isAlive()||n.delete(i);return}Z_(e,i,a,t)})}function Z_(e,t,n,r){let i=q_.get(e),a=i?.get(t);if(i&&a){i.delete(t);for(let e of a)e(n,r)}}var Q_=new WeakMap,$_={"not-dynamic":`forces, impulses, velocities and sleep act on a dynamic body alone. Move a kinematic body with setNextPose, place any body with teleport, or make it dynamic with setBody`,"not-kinematic":`setNextPose moves a kinematic body alone. Place any body at once with teleport, push a dynamic one with applyImpulse, or make it kinematic with setBody`,"use-set-next-pose":`move a kinematic body with setNextPose and place any body with teleport`};function ev(e,{verb:t,entity:n,declared:r,reason:i}){let a=Pt(),o=`${t} was handed entity ${n.id()}${a?` in the system ${a}`:``}, whose body is ${r} (${i}): ${$_[i]}.`;if(e.has(j))throw S(Error(o),`SP0536`,void 0);let s=Q_.get(e);s||Q_.set(e,s=new Set);let c=`${n}:${i}`;return s.has(c)||(s.add(c),console.error(o)),i}function tv(e,t){let n=wc(t,el)?.bodyType;if(n)return n;if(t.has(I(il)))return R.Fixed;throw S(Error(`${e} was handed entity ${t.id()}, which has no body: declare one with body and collider on its Entity, its prefab or its spawn.`),`SP0537`,void 0,t)}function nv(e,t,n,r){let i=rv(e,t,n),a=tv(e,n);return a===r?i:ev(i.world,{verb:e,entity:n,declared:a,reason:r===R.Dynamic?`not-dynamic`:`not-kinematic`})}function rv(e,t,n){if(!n.isAlive())throw S(Error(`${e} was handed entity ${n.id()}, which has been destroyed, and its body with it: check the entity is alive before writing its body.`),`SP0538`,void 0,n);let r=sr(t,n,e);tv(e,n);let i=XD(r)??void 0;return{world:r,handle:i,body:i?.bodies.get(n)}}function iv(e,t,n){let{world:r,handle:i}=e,a=i&&cd(r,i,t);if(!i||!a){Y_(r,t,n);return}Z_(r,t,a,i),n(a,i)}function av(e){return{x:e.x,y:e.y,z:e.z}}function ov(e,t,n,{at:r}={}){let i=nv(`applyImpulse`,e,t,R.Dynamic);if(typeof i==`string`)return i;let a=av(n),o=r&&av(r);return iv(i,t,e=>{o?e.applyImpulseAtPoint(a,o,!0):e.applyImpulse(a,!0)}),null}function sv(e,t,n,{at:r}={}){let i=nv(`applyForce`,e,t,R.Dynamic);if(typeof i==`string`)return i;let a=av(n),o=r&&av(r);return iv(i,t,(e,n)=>{o?e.addForceAtPoint(a,o,!0):e.addForce(a,!0),n.forcedBodies.add(t)}),null}function cv(e,t,n){let r=nv(`applyTorque`,e,t,R.Dynamic);if(typeof r==`string`)return r;let i=av(n);return iv(r,t,(e,n)=>{e.addTorque(i,!0),n.forcedBodies.add(t)}),null}function lv(e,t,n){let r=nv(`applyTorqueImpulse`,e,t,R.Dynamic);if(typeof r==`string`)return r;let i=av(n);return iv(r,t,e=>e.applyTorqueImpulse(i,!0)),null}function uv(e,t,n){let r=nv(`setLinearVelocity`,e,t,R.Dynamic);if(typeof r==`string`)return r;let i=av(n);return iv(r,t,e=>e.setLinvel(i,!0)),null}function dv(e,t,n){let r=nv(`setAngularVelocity`,e,t,R.Dynamic);if(typeof r==`string`)return r;let i=av(n);return iv(r,t,e=>e.setAngvel(i,!0)),null}function fv(e,t){let n=nv(`wakeUp`,e,t,R.Dynamic);return typeof n==`string`?n:(iv(n,t,e=>e.wakeUp()),null)}function pv(e,t){let n=nv(`sleep`,e,t,R.Dynamic);return typeof n==`string`?n:(iv(n,t,e=>e.sleep()),null)}function mv(e,t,{position:n,rotation:r}){let i=nv(`setNextPose`,e,t,R.Kinematic);if(typeof i==`string`)return i;let a=n&&av(n),o=r&&{x:r.x,y:r.y,z:r.z,w:r.w};return iv(i,t,e=>{a&&e.setNextKinematicTranslation(a),o&&e.setNextKinematicRotation(o),e.wakeUp()}),null}function hv(e,t,n,r,i=!1){let a=e?rv(`teleport`,e,n):gv(t,n),o=a.handle&&cd(a.world,a.handle,n)||void 0;zd(a.handle,n,r),a.handle?.slidBodies.set(n,null),o||Y_(a.world,n,xv),i&&o?.isDynamic()&&a.handle?(Z_(a.world,n,o,a.handle),yv(o)):i&&!o&&Y_(a.world,n,yv);let s=n.get(O),c=n.get(Cn);s&&c&&(c.position.copy(s.position),c.rotation.copy(s.rotation));let l=n.get(Tn)?.count;return l===void 0?n.add(Tn({count:1})):n.set(Tn,{count:l+1}),!o||!a.handle||(Cv(a,n,o),!_v(a.handle,o))}function gv(e,t){tv(`teleport`,t);let n=XD(e)??void 0;return{world:e,handle:n,body:n?.bodies.get(t)}}function _v(e,t){let{QueryFilterFlags:n}=B();e.world.refreshQueries();for(let r=0;r<t.numColliders();r++){let i=t.collider(r);if(!i.isSensor()&&e.world.intersectionWithShape(i.translation(),i.rotation(),i.shape,n.EXCLUDE_DYNAMIC|n.EXCLUDE_SENSORS,i.collisionGroups(),void 0,t))return!0}return!1}var vv={x:0,y:0,z:0};function yv(e){e.isDynamic()&&(e.setLinvel(vv,!0),e.setAngvel(vv,!0))}function bv(e,t,n){let r=av(n);iv(rv(`addLinearVelocity`,e,t),t,e=>{let t=e.linvel();e.setLinvel({x:t.x+r.x,y:t.y+r.y,z:t.z+r.z},!0)})}function xv(e){e.isKinematic()&&(e.setNextKinematicTranslation(e.translation()),e.setNextKinematicRotation(e.rotation()))}var Sv=new WeakMap;function Cv({world:e,handle:t},n,r){let i=Sv.get(e);if(i||Sv.set(e,i=new Set),t&&e.has(j)&&!i.has(n)){t.world.refreshQueries();for(let e=0;e<r.numColliders();e++){let a=r.collider(e);if(a.isSensor())continue;let o;if(t.world.intersectionsWithShape(a.translation(),a.rotation(),a.shape,e=>(o=e.parent()?.userData,o===void 0),wv(),void 0,void 0,r),o!==void 0){i.add(n),console.warn(`teleport placed entity ${n.id()} inside the fixed body of entity ${o}: a dynamic body is pushed out over the next steps, and a kinematic or fixed one stays inside. Place it clear of walls.`);return}}}}function wv(){let{QueryFilterFlags:e}=B();return e.EXCLUDE_DYNAMIC|e.EXCLUDE_KINEMATIC|e.EXCLUDE_SENSORS}var Tv=new l,Ev=new l;function Dv(e,t,n){return tv(e,n),t.get(N)?.handle?.bodies.get(n)??null}function Ov(e,t){if(Tv.set(0,0,0),A(t)){let e=wc(t,al);return e&&Tv.copy(e.linear),Tv}let n=Dv(`readLinearVelocity`,e,t);return n&&n.linvel(Tv),Tv}function kv(e,t){if(Ev.set(0,0,0),A(t)){let e=wc(t,al);return e&&Ev.copy(e.angular),Ev}let n=Dv(`readAngularVelocity`,e,t);return n&&n.angvel(Ev),Ev}function Av(e,t){return A(t)?wc(t,al)?.sleeping??!1:Dv(`isSleeping`,e,t)?.isSleeping()??!1}function jv(e,t,n){let r=e.get(N)?.handle?.bodies.get(t),i=t.get(O);return r?.isKinematic()&&!A(t)?(r.nextTranslation(n.position),r.nextRotation(n.rotation)):i&&(n.position.copy(i.position),n.rotation.copy(i.rotation)),n}function Mv(e,t,{position:n,rotation:r}){if(!t.has(I(il))){let e=t.get(O);n&&e?.position.set(n.x,n.y,n.z),r&&e?.rotation.set(r.x,r.y,r.z,r.w);return}let i=ir(e,t);i&&mv(i,t,{position:n,rotation:r})}var Nv=new i;function Pv(e){return-Nv.setFromObject(e).min.y}var Fv=Math.PI;function Iv(e,t){for(let n=0;n<e.length;n+=3)e[n]=-e[n],e[n+1]+=t,e[n+2]=-e[n+2];return e}var Lv=20;function Rv({kind:e,name:t,names:n,registrationInstructions:r}){let i=[...n],a=`No ${e} named "${t}" is registered`;if(i.length===0)return`${a}, and none is yet: ${r}.`;let o=i.slice(0,Lv).map(e=>`"${e}"`),s=i.length>Lv?`, or ${i.length-Lv} more`:``;return`${a}: ${r}, or name one of ${o.join(`, `)}${s}.`}var zv=new Map;function Bv(e,t){return Ne(zv,e,typeof t==`string`?{url:t}:{url:t.path,size:t.capsule,bounds:t.bounds,hullPoints:t.hullPoints,material:t.material})}function Vv(){return[...zv.keys()]}function Hv(e){return e.includes(`/`)}function Uv(e){return e.replace(/^\/(?!\/)/,``)}function Wv(e){return e.replace(/^.*\//,``).replace(/\.glb$/,``)}function Gv(e){let t=zv.get(e)?.url;if(t)return t;if(Hv(e))return Uv(e);throw S(Error(Rv({kind:`model`,name:e,names:zv.keys(),registrationInstructions:`register it with registerModel(name, url), or give a path the game serves, such as /assets/rock.glb`})),[[`SP0031`,`No %s named "%s" is registered, and none is yet: %s.`],[`SP0501`,`No %s named "%s" is registered: %s, or name one of %s%s.`]],`readModel`)}function Kv(e){let t=zv.get(e);if(t||!Hv(e))return t;let n=zv.get(Wv(e));return n?.url===Uv(e)?n:void 0}function qv(e){return Kv(e)?.material}function Jv(e){return Kv(e)?.size}function Yv(e){return Kv(e)?.bounds}function Xv(e){let t=Kv(e)?.bounds;return t&&-t.min[1]}function Zv(e){let t=Kv(e);if(t?.hullPoints&&t.bounds)return Iv(Float32Array.from(t.hullPoints),-t.bounds.min[1])}function Qv(e){if(typeof e!=`object`||!e)return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}var $v=!1;function ey(){return $v}function ty(e){let t=$v;$v=!0;try{return e()}finally{$v=t}}var ny=C(`prefab`,{name:``}),ry=new Map,iy=/^[a-z][A-Za-z0-9]*$/;function ay(e,t={}){if(!iy.test(e))throw S(Error(`"${e}" cannot name a prefab: a name is letters and digits starting with a lower case letter, as "wolf" and "kartBlue" are. It is the key the dump writes the prefab under.`),`SP0411`,`definePrefab`);let n=Re(Error().stack),r=ry.get(e);if(r&&!ze(r,n))throw S(Error(`Two prefabs are named "${e}": the room and every page know a prefab by its name, so each needs its own. Rename one of them.`),`SP0412`,`definePrefab`);ry.set(e,n),sy(t.traits,`The prefab "${e}"`);for(let n of t.traits??[]){let[t,r]=cy(n);r!==void 0&&uy(r,`${ly(t)} of the prefab "${e}"`)}return{...t,name:e}}var oy=new Map([[O,`a pose: position, rotation and scale`],[On,`model and animation`],[I(il),`collider`],[I(el),`body`],[I(tl),`body's ignore`],[Ri,`collider, whose hull reads the model's corners`],[ny,`the prefab's name`]]);function sy(e,t){for(let n of e??[]){let e=oy.get(cy(n)[0]);if(e!==void 0)throw S(Error(`${t} lists ${ly(cy(n)[0])} among its traits, which the engine makes from ${e}: set that instead, so a scene and a system spawn it alike.`),`SP0413`,void 0)}}function cy(e){return Array.isArray(e)?[e[0],e[1]]:[e,void 0]}function ly(e){return Ye(e)??`the trait ${e.id}`}function uy(e,t){if(typeof e!=`object`||!e)return e;if(e instanceof o||e instanceof l||e instanceof f)return e.clone();if(Array.isArray(e))return e.map((e,n)=>uy(e,`${t}[${n}]`));if(e instanceof Map)return new Map([...e].map(([e,n])=>[uy(e,`${t}'s key ${String(e)}`),uy(n,`${t} at ${String(e)}`)]));let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw S(Error(`${t} holds a ${e.constructor?.name??`value`}, which a spawn cannot copy for each entity: hold plain records, lists, maps, numbers, text and three.js vectors in a prefab's traits, and make anything else in a system after the spawn.`),`SP0414`,void 0);let r={};for(let[n,i]of Object.entries(e))r[n]=uy(i,`${t}.${n}`);return r}function dy(e){let{name:t}=e;if(t===void 0)return!1;if(typeof t!=`string`||!ry.has(t))throw S(Error(`A spawn was given a prefab named ${JSON.stringify(t)}, which no definePrefab declared: make a prefab with definePrefab, or leave the name out of a spawn's options.`),`SP0415`,void 0);return!0}function fy(e){let t=Zv(e);return t!==void 0&&vu(t)}function py(e,t){if(e===void 0)throw S(Error(`A hull collider is shaped from a model; name one`),`SP0003`,void 0);if(!t)throw S(Error(`An entity drawn as "${e}" has a hull collider, and the hull corners registered under that name wrap no body, so it would have none, on the page or in a room: no corners are registered, as for a model registered by a bare url, baked with hullPoints: false or baked before the corners existed, or the corners lie on one line. Bake the manifest with hullPoints on, and register the model with its entry, registerModel(name, models[id]), or give it a box or a capsule collider sized to what it draws.`),`SP0416`,void 0)}function my(e){return e.some(({shape:e})=>e.type===L.ConvexHull&&!e.points)}function hy(e,t={},n=!1){let{position:r,rotation:i,scale:a}=t,o=n||r!==void 0||i!==void 0||a!==void 0;e&&sy(t.traits,`A spawn of a prefab`);let s=new Map;for(let t of e?.traits??[]){let[e,n]=cy(t);s.set(e,n===void 0?void 0:uy(n,`a trait`))}for(let e of t.traits??[]){let[t,n]=cy(e),r=uy(n,`a trait`),i=s.get(t);s.set(t,Qv(i)&&Qv(r)?{...i,...r}:r)}let c=[];(e&&!n?e.placed!==!1:o)&&c.push(O(bn({position:r,rotation:i,scale:a})));for(let[e,t]of s)c.push(t===void 0?e:[e,t]);let l=t.model??e?.model;l!==void 0&&c.push(On({name:l,animation:t.animation??e?.animation??``}));let u=t.collider??e?.collider,d=t.body??e?.body;if(d&&!u)throw S(Error(`A ${d.bodyType} body was declared with no collider, so it would have no shape to collide with: give it a collider, such as collider: { shape: box({ size: [1, 1, 1] }) }.`),`SP0417`,void 0);if(u){let e=ll(u),t=ul(d);if(c.push(I(il)({colliders:e}),I(el)(t)),d?.ignore?.length&&c.push(I(tl)({ignore:[...d.ignore]})),my(e)){n||py(l,l!==void 0&&fy(l));let e=l===void 0?void 0:Zv(l);e&&c.push(Ri({points:e}))}}return e&&c.push(ny({name:e.name})),c}function gy(e,t,n){return e.spawn(...hy(t,n,!0))}var _y=C(`localEntity`);function vy(e,t,n){return yy(Zn(e,`spawn`),t,n)}function yy(e,t,n){let r=dy(t)?t:void 0,i=r?n:t;return e.spawn(...hy(r,i))}function by(e,t,n){if(ey())throw S(Error(`spawnLocal ran in a predicted system as it stepped her alone, as a correction's re-run does, which would make one more entity for every correction. Spawn a page's own entity from a system with runsOn: RunContext.Client, or from a view's effect.`),`SP0418`,`spawnLocal`);let r=yy(e,t,n);return r.add(_y),r}function xy(e,t){if(!t.isAlive())return;let n=sr(e,t,`destroy`),r=Ic(n);r?r.add(t):Rc(n,t)}var Sy=function(e){return e.Fixed=`fixed`,e.Hinge=`hinge`,e.Slider=`slider`,e.BallAndSocket=`ball-and-socket`,e.Spring=`spring`,e.Rope=`rope`,e}({});function Cy(){return{type:`fixed`,body:null,to:null,anchor:new l,connectedAnchor:new l,frame:new f,connectedFrame:new f,limits:null,motor:null,restLength:0,stiffness:0,damping:0,length:0,breakForce:null,breakTorque:null,collideConnected:!1}}var wy=C(`joint`,Cy,{entities:[`body`,`to`]}),Ty=Sc(wy),Ey=function(e){return e.NoSetting=`no-setting`,e}({}),Dy=yr(`jointBroken`,()=>({force:0,torque:0,body:null,to:null}),{entities:[`body`,`to`]}),Oy=y(wy),ky=new l,Ay=new f,jy=new l,My=new f,Ny=new l,Py=new l(1,0,0),Fy=new l;function Iy(e,t,n){let r=e?.get(O);return r?(t.copy(r.position),n.copy(r.rotation),r.scale):(t.set(0,0,0),n.identity(),new l(1,1,1))}function Ly(e){return e===`slider`?[1,0,0]:[0,1,0]}function Ry(e,t){if(!(t.has(I(el))||t.has(I(il))))throw S(Error(`${e} was handed entity ${t.id()}, which has no body: declare one with body and collider on its Entity, its prefab or its spawn.`),`SP0539`,void 0,t)}function zy(e,t){let n=Cy(),r=t.type,i=t.to??null;n.type=r,n.body=e,n.to=i;let a=Iy(e,ky,Ay),o=Iy(i,jy,My);n.anchor.fromArray(t.anchor??[0,0,0]),Ny.copy(n.anchor).multiply(a).applyQuaternion(Ay).add(ky),t.connectedAnchor?n.connectedAnchor.fromArray(t.connectedAnchor):r===`spring`||r===`rope`?n.connectedAnchor.set(0,0,0):n.connectedAnchor.copy(Ny).sub(jy).applyQuaternion(My.clone().invert()).divide(o),(t.type===`hinge`||t.type===`slider`)&&(Fy.fromArray(t.axis??Ly(r)).normalize(),n.frame.setFromUnitVectors(Py,Fy),n.limits=t.limits?{...t.limits}:null,n.motor=t.motor?Vy(t.motor):null),n.connectedFrame.copy(My).invert().multiply(Ay).multiply(n.frame);let s=By(n,a,o);return t.type===`spring`&&(n.restLength=t.restLength??s,n.stiffness=t.stiffness,n.damping=t.damping??0),t.type===`rope`&&(n.length=t.length??s),n.breakForce=t.breakForce??null,n.breakTorque=t.breakTorque??null,n.collideConnected=t.collideConnected??!1,n}function By(e,t,n){let r=e.anchor.clone().multiply(t).applyQuaternion(Ay).add(ky),i=e.connectedAnchor.clone().multiply(n).applyQuaternion(My).add(jy);return r.distanceTo(i)}function Vy(e){return{targetPosition:e.targetPosition??0,targetVelocity:e.targetVelocity??0,stiffness:e.stiffness??0,damping:e.damping??0,maxForce:e.maxForce??null}}function Hy(e,t,n){let r=sr(e,t,`createJoint`);if(Ry(`createJoint`,t),n.to){if(Bn(r)){let e=ir(r,n.to);if(!e)throw S(Error(`createJoint was handed entity ${n.to.id()} for to, which the room simulates: a page joins only bodies it holds alone, since no single solver holds a body the room simulates and one the page does. Join them on the room.`),`SP0540`,`createJoint`);sr(e,n.to,`createJoint`)}else sr(e,n.to,`createJoint`);Ry(`createJoint`,n.to)}sb();let i=[I(Ty)(zy(t,n))];return Bn(r)?by(r,{traits:i}):vy(e,{traits:i})}var Uy={fixed:[],"ball-and-socket":[],hinge:[`limits`,`motor`],slider:[`limits`,`motor`],spring:[`restLength`,`stiffness`,`damping`],rope:[`length`]};function Wy(e,t,n){let r=Uy[t];for(let i of Object.keys(n))if(n[i]!==void 0&&!(i===`breakForce`||i===`breakTorque`||i===`collideConnected`||r.includes(i)))return`setJoint was handed ${i} for joint ${e.id()}, a ${t} joint, which has no ${i} (no-setting): a hinge or a slider takes limits and a motor, a spring its rest length, stiffness and damping, and a rope its length.`;return null}function Gy(e,t,n){let r=sr(e,t,`setJoint`),i=wc(t,Ty);if(!i)throw S(Error(`setJoint was handed entity ${t.id()}, which is no joint: pass the entity createJoint returned.`),`SP0541`,`setJoint`);let a=Wy(t,i.type,n);if(a){if(r.has(j))throw S(Error(a),`SP0542`,`setJoint`);return console.error(a),`no-setting`}let o={...i};return n.limits!==void 0&&(o.limits=n.limits&&{...n.limits}),n.motor!==void 0&&(o.motor=n.motor&&Vy({...i.motor,maxForce:i.motor?.maxForce??void 0,...n.motor})),n.restLength!==void 0&&(o.restLength=n.restLength),n.stiffness!==void 0&&(o.stiffness=n.stiffness),n.damping!==void 0&&(o.damping=n.damping),n.length!==void 0&&(o.length=n.length),n.breakForce!==void 0&&(o.breakForce=n.breakForce),n.breakTorque!==void 0&&(o.breakTorque=n.breakTorque),n.collideConnected!==void 0&&(o.collideConnected=n.collideConnected),Cc(t,Ty,o),null}function Ky(e,t,n){let{JointData:r}=B(),i=e.anchor.clone().multiply(t),a=e.connectedAnchor.clone().multiply(n);switch(e.type){case`fixed`:return r.fixed(i,e.frame,a,e.connectedFrame);case`hinge`:return r.revolute(i,a,Py);case`slider`:return r.prismatic(i,a,Py);case`ball-and-socket`:return r.spherical(i,a);case`spring`:return r.spring(e.restLength,e.stiffness,e.damping,i,a);case`rope`:return r.rope(e.length,i,a)}}var qy=1e6,Jy=34e37;function Yy(e,t){if(e.setContactsEnabled(t.collideConnected),t.type!==`hinge`&&t.type!==`slider`)return;let n=e;t.limits?n.setLimits(-t.limits.max,-t.limits.min):n.limitsEnabled()&&n.setLimits(-1e6,qy);let{motor:r}=t;n.setMotorMaxForce(r?r.maxForce??Jy:0),n.configureMotor(-(r?.targetPosition??0),-(r?.targetVelocity??0),r?.stiffness??0,r?.damping??0)}function Xy(e,t,n,r){let{body:i,to:a}=r;if(!i)return!1;let o=cd(e,t,i),s=a?cd(e,t,a):void 0;if(!o||a&&!s)return!1;let{RigidBodyDesc:c}=B(),u=s?null:t.world.createRigidBody(c.fixed()),d=i.get(O)?.scale??new l(1,1,1),f=a?.get(O)?.scale??new l(1,1,1),p=t.world.createImpulseJoint(Ky(r,d,f),o,s??u,!0);return p.setLocalFrame1(r.anchor.clone().multiply(d),r.frame),p.setLocalFrame2(r.connectedAnchor.clone().multiply(f),r.connectedFrame),Yy(p,r),t.joints.set(n,{joint:p,anchorBody:u,record:r,scale:d.clone(),toScale:f.clone()}),!0}function Zy(e,t){let n=t.body?.get(O)?.scale,r=t.to?.get(O)?.scale;n&&!n.equals(e.scale)&&(e.scale.copy(n),e.joint.setLocalFrame1(t.anchor.clone().multiply(n),t.frame)),r&&!r.equals(e.toScale)&&(e.toScale.copy(r),e.joint.setLocalFrame2(t.connectedAnchor.clone().multiply(r),t.connectedFrame))}function Qy(e,t){t.joint.isValid()&&e.world.removeImpulseJoint(t.joint,!0),t.anchorBody&&e.world.removeRigidBody(t.anchorBody)}function $y(e,t){t.brokenJoints.forEach(t=>{t.isAlive()&&Rc(e,t)}),t.brokenJoints.clear(),t.joints.forEach((e,n)=>{e.joint.isValid()||(Qy(t,e),t.joints.delete(n))}),D(e,Oy,([n],r)=>{if(A(r))return;let i=t.joints.get(r);if(!i){Xy(e,t,r,n);return}if(Zy(i,n),i.record!==n){if(n.restLength!==i.record.restLength||n.stiffness!==i.record.stiffness||n.damping!==i.record.damping||n.length!==i.record.length){Qy(t,i),t.joints.delete(r),Xy(e,t,r,n);return}Yy(i.joint,n),i.record=n}})}var eb={x:0,y:0,z:0},tb={x:0,y:0,z:0},nb={force:0,torque:0,body:null,to:null};function rb(e,t){t.joints.forEach((n,r)=>{let{breakForce:i,breakTorque:a}=n.record;if(i===null&&a===null)return;n.joint.reactionForce(eb),n.joint.reactionTorque(tb);let o=z(eb.x,eb.y,eb.z),s=z(tb.x,tb.y,tb.z);if((i===null||o<=i)&&(a===null||s<=a))return;Qy(t,n),t.joints.delete(r),t.brokenJoints.add(r);let c=ir(e,r);c&&(nb.force=o,nb.torque=s,nb.body=n.record.body,nb.to=n.record.to,ei(c,Dy,nb,{entity:r}))})}var ib={force:new l,torque:new l};function ab(e,t){ib.force.set(0,0,0),ib.torque.set(0,0,0);let n=e.get(N)?.handle?.joints.get(t);return n?(n.joint.reactionForce(ib.force),n.joint.reactionTorque(ib.torque),ib):ib}var ob=!1;function sb(){ob||(ob=!0,Ec((e,t)=>{let n=e.get(N)?.handle,r=n?.joints.get(t);if(n&&r&&(Qy(n,r),n.joints.delete(t)),t.has(wy))return;let i=[];D(e,Oy,([e],n)=>{(e.body===t||e.to===t)&&i.push(n)});for(let t of i)Rc(e,t)}))}var cb=1e-4;function lb(e,t,n){if(t>=0)return 1/0;let r=t*t-e*n;return r<0?1/0:n/(Math.sqrt(r)-t)}var ub={x:0,y:0,z:0},db={x:0,y:0,z:0},fb={x:0,y:0,z:0};function pb(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function mb(e,t,n){let r=pb(e,t);n.x=e.x-r*t.x,n.y=e.y-r*t.y,n.z=e.z-r*t.z;let i=z(t.x,t.z);if(i<1e-5)return!1;let a=(n.z*t.x-n.x*t.z)/i;return n.x+=a*t.z/i,n.z-=a*t.x/i,!0}function hb(e,t){return e.y>=0&&e.y<=t}function gb(e,t){return e.y>=t}function _b(e,t,n){n.x=e.x,n.z=e.z,n.y=-(t.x*e.x+t.z*e.z)/t.y}function vb({remaining:e,normal:t,input:n,climbCosine:r},i){let a=gb(t,r),o=pb(e,t);ub.x=e.x-o*t.x,ub.y=e.y-o*t.y,ub.z=e.z-o*t.z;let s=n.y>0;fb.x=n.x,fb.y=0,fb.z=n.z,mb(fb,t,fb);let c=fb.y<0;mb(e,t,db)&&(hb(t,r)&&db.y>0&&!s||a&&db.y<0&&!c)&&(ub.x-=db.x,ub.y-=db.y,ub.z-=db.z);let l=Math.max(0,o);return i.x=ub.x+(l+cb)*t.x,i.y=ub.y+(l+cb)*t.y,i.z=ub.z+(l+cb)*t.z,z(ub.x,ub.y,ub.z)+l>=j_}function yb(e,t){return pb(e,t)<=0}function bb({remaining:e,first:t,second:n},r){let i=t.y*n.z-t.z*n.y,a=t.z*n.x-t.x*n.z,o=t.x*n.y-t.y*n.x;if(z(i,o)<1e-5)return!1;let s=z(i,a,o),c=(e.x*i+e.y*a+e.z*o)/s;return r.x=c*i/s+(t.x+n.x)*cb,r.y=(t.y+n.y)*cb,r.z=c*o/s+(t.z+n.z)*cb,Math.abs(c)>=j_}var xb={watching:!1,met:!1},Sb=1e-6,Cb=[],wb;function Tb(e){return!Cb.includes(e.handle)&&(wb?.(e)??!0)}function Eb(e,t){return Cb.length=0,Cb.push(e.handle),wb=t,Tb}function Db(e){return Cb.push(e.handle),Tb}function Ob(){return xb.watching&&!xb.met}function kb(e,t){e===t&&(xb.met=!0)}function Ab(e,t,n){return jb(e,n)<=jb(e,t)+Sb}function jb(e,t){return z(e.x-t.x,e.y-t.y,e.z-t.z)}var Mb=1e-5,Nb=[new l,new l],Pb=new l,Fb=new l,G=new l,Ib=new l,Lb=1/0;function Rb(e,t,n){let r=e.lengthSq()-n*n;return r>0?lb(t.lengthSq(),e.dot(t),r):1/0}function zb(e,t,n){return n.set(t&1?e.x:-e.x,t&2?e.y:-e.y,t&4?e.z:-e.z)}function Bb(e,t,n,r){let i=(t+1)%3,a=(t+2)%3;return r.setComponent(t,0),r.setComponent(i,(n&1?1:-1)*e.getComponent(i)),r.setComponent(a,(n&2?1:-1)*e.getComponent(a)),r}function Vb(e,t){return t.x*e.x<0||t.y*e.y<0||t.z*e.z<0}function Hb({half:e,centre:t,axis:n,reach:r}){let i=-r,a=r;for(let r=0;r<3;r++){let o=t.getComponent(r),s=n.getComponent(r),c=e.getComponent(r);if(s===0){if(Math.abs(o)>c)return!1;continue}let l=(-c-o)/s,u=(c-o)/s;if(i=Math.max(i,Math.min(l,u)),a=Math.min(a,Math.max(l,u)),i>a)return!1}return!0}function Ub(e,t,n){let r=Pb.subVectors(t,n).length();r>=Lb||(Lb=r,e.normal.copy(Pb).divideScalar(r),e.point.copy(n))}function Wb(e){let{half:t,centre:n,axis:r,reach:i}=e;Lb=1/0,Ib.copy(t).negate();for(let n of Nb)Ub(e,n,G.copy(n).clamp(Ib,t));for(let a=0;a<8;a++){zb(t,a,G);let o=Pb.subVectors(G,n).dot(r);Math.abs(o)<=i&&Ub(e,Fb.copy(n).addScaledVector(r,o),G)}for(let a=0;a<3;a++){let o=r.getComponent(a),s=1-o*o;if(!(s<1e-12))for(let c=0;c<4;c++){Bb(t,a,c,G),Pb.subVectors(n,G);let l=Pb.getComponent(a),u=Pb.dot(r),d=(l-o*u)/s,f=(o*l-u)/s;Math.abs(d)>t.getComponent(a)||Math.abs(f)>i||(G.setComponent(a,d),Ub(e,Fb.copy(n).addScaledVector(r,f),G))}}return Lb}function Gb(e,t,n,r){return t>=0&&t<=Lb&&(Lb=t,e.point.copy(r),e.normal.copy(n).addScaledVector(e.along,t).sub(r),e.normal.normalize(),!0)}function Kb(e){let{half:t,centre:n,axis:r,reach:i,along:a,length:o,radius:s}=e;Nb[0].copy(n).addScaledVector(r,i),Nb[1].copy(n).addScaledVector(r,-i),e.touching=!1;let c=-1/0;for(let e=0;e<6;e++){let n=e>>1,r=e&1?1:-1,i=Math.min(r*Nb[0].getComponent(n),r*Nb[1].getComponent(n))-t.getComponent(n),l=r*a.getComponent(n);if(i+Math.min(0,l*o)>s+1e-9)return 1/0;c=Math.max(c,i)}if(c<s+1e-9){if(Hb(e))return NaN;if(Wb(e)<s+1e-9)return e.touching=!0,a.dot(e.normal)<-1e-9?0:1/0}Lb=o;let l=!1;for(let n of Nb){for(let r=0;r<6;r++){let i=r>>1,o=r&1?1:-1,c=o*a.getComponent(i);if(c>=0)continue;let u=(o*n.getComponent(i)-t.getComponent(i)-s)/-c;Fb.copy(n).addScaledVector(a,u);let d=(i+1)%3,f=(i+2)%3;Math.abs(Fb.getComponent(d))>t.getComponent(d)||Math.abs(Fb.getComponent(f))>t.getComponent(f)||(Fb.setComponent(i,o*t.getComponent(i)),Gb(e,u,n,Fb)&&(l=!0,e.normal.set(0,0,0).setComponent(i,o)))}for(let r=0;r<3;r++)for(let i=0;i<4;i++){if(Bb(t,r,i,G),!Vb(a,G))continue;Pb.subVectors(n,G).setComponent(r,0),Fb.copy(a).setComponent(r,0);let o=Rb(Pb,Fb,s);if(o>Lb)continue;let c=n.getComponent(r)+o*a.getComponent(r);Math.abs(c)>t.getComponent(r)||(G.setComponent(r,c),l=Gb(e,o,n,G)||l)}for(let r=0;r<8;r++)zb(t,r,G),Vb(a,G)&&(Pb.subVectors(n,G),l=Gb(e,Rb(Pb,a,s),n,G)||l)}let u=a.dot(r);for(let o=0;o<8;o++){if(zb(t,o,G),!Vb(a,G))continue;Pb.subVectors(G,n);let c=Pb.dot(r);Pb.addScaledVector(r,-c),Fb.copy(a).addScaledVector(r,-u).negate();let d=Rb(Pb,Fb,s);if(d>Lb)continue;let f=c-d*u;Math.abs(f)>i||(Ib.copy(n).addScaledVector(r,f),l=Gb(e,d,Ib,G)||l)}for(let o=0;o<3;o++){let c=r.getComponent(o),u=1-c*c;if(!(u<1e-12))for(let d=0;d<4;d++){if(Bb(t,o,d,G),!Vb(a,G))continue;Ib.set(0,0,0).setComponent(o,1).cross(r).normalize(),Pb.subVectors(n,G);let f=Pb.dot(Ib);f<0&&(Ib.negate(),f=-f);let p=a.dot(Ib);if(p>=0)continue;let m=(f-s)/-p;Pb.addScaledVector(a,m);let h=Pb.getComponent(o),g=Pb.dot(r),_=(h-c*g)/u,ee=(c*h-g)/u;Math.abs(_)>t.getComponent(o)||Math.abs(ee)>i||(G.setComponent(o,_),Fb.copy(n).addScaledVector(r,ee),Gb(e,m,Fb,G)&&(l=!0,e.normal.copy(Ib)))}}return l?Lb:1/0}var qb={collider:null,body:null,normal:new l,point:new l},Jb=[],Yb=new Map,Xb=0,Zb={x:0,y:0,z:0},Qb={x:0,y:0,z:0,w:1};function $b(){Xb=0,Yb.clear()}function ex(){return Xb>0}function tx(e,t){let n=Jb[Xb]??={collider:e,body:null,half:new l,position:new l,rotation:new f,inverse:new f};n.collider=e;let r=e.parent();n.body=r?.isDynamic()?r:null,n.half.copy(t),n.position.copy(e.translation(Zb)),n.rotation.copy(e.rotation(Qb)).normalize(),n.inverse.copy(n.rotation).invert(),Yb.set(e,Xb++)}var nx={half:new l,centre:new l,axis:new l,reach:0,along:new l,length:0,radius:0,normal:new l,point:new l,touching:!1},rx=new l,ix=new l;function ax(e,t,n){nx.half.copy(e.half),nx.centre.copy(t).sub(e.position).applyQuaternion(e.inverse),nx.axis.set(0,1,0).applyQuaternion(e.inverse),nx.reach=n}function ox(e,t,n){let r=Yb.get(e);return r===void 0||(ax(Jb[r],t,n),Hb(nx))}function sx(e){let{centre:t,along:n,length:r,halfHeight:i,radius:a,dynamic:o,predicate:s}=e,c=nx,l=1/0;for(let e=0;e<Xb;e++){let u=Jb[e];if(u.body&&!o||s&&!s(u.collider))continue;ax(u,t,i),c.along.copy(n).applyQuaternion(u.inverse),c.radius=a,c.length=Math.min(l,r);let d=Kb(c);if(d<=c.length){if(!c.touching){if(rx.copy(c.normal),ix.copy(c.point),c.radius=a-Mb,c.length=r,Kb(c)===1/0)continue;c.normal.copy(rx),c.point.copy(ix)}d===l&&xb.watching&&(xb.met=!0),l=d,qb.collider=u.collider,qb.body=u.body,qb.normal.copy(c.normal).applyQuaternion(u.rotation),qb.point.copy(c.point).applyQuaternion(u.rotation).add(u.position)}}return l}var cx=1e-10,lx=[...[1,-1].flatMap(e=>[new l(e,0,0),new l(0,e,0),new l(0,0,e)]),...[0,1,2,3,4,5,6,7].map(e=>new l(e&1?1:-1,e&2?1:-1,e&4?1:-1))],ux=new l,dx=new l,fx=new l,px=new l;function mx(e,t){let n=e.length/3,r=Float64Array.from(e),i=Array.from({length:n},()=>new Set);for(let e=0;e<t.length;e+=3)for(let n=0;n<3;n++){let r=t[e+n],a=t[e+(n+1)%3];i[r].add(a),i[a].add(r)}let a=new Uint32Array(n+1);for(let e=0;e<n;e++)a[e+1]=a[e]+i[e].size;let o=new Uint32Array(a[n]);for(let e=0;e<n;e++)o.set([...i[e]],a[e]);let s=new l(1/0,1/0,1/0),c=new l(-1/0,-1/0,-1/0);for(let e=0;e<n;e++)ux.fromArray(r,3*e),s.min(ux),c.max(ux);let u=new Uint32Array(lx.length);lx.forEach((e,t)=>{let i=-1/0;for(let a=0;a<n;a++){let n=ux.fromArray(r,3*a).dot(e);n<=i||(i=n,u[t]=a)}});let d=new l;for(let e=0;e<n;e++)d.add(ux.fromArray(r,3*e));d.divideScalar(n);let f=cx;for(let e=0;e<t.length;e+=3){dx.fromArray(r,3*t[e]),fx.fromArray(r,3*t[e+1]).sub(dx),px.fromArray(r,3*t[e+2]).sub(dx),fx.cross(px);let i=fx.length();if(i>0){fx.dot(ux.subVectors(d,dx))>0&&fx.negate();for(let e=0;e<n;e++)ux.fromArray(r,3*e).sub(dx),f=Math.max(f,2*ux.dot(fx)/i)}}return{corners:r,starts:a,neighbours:o,seeds:u,slack:f,low:s,high:c}}function hx(e){return{hull:e,centre:new l,axis:new l(0,1,0),reach:0,along:new l,length:0,radius:0,start:-1,lastCorners:new Int32Array(3),lastSigns:new Float64Array(3),lastSize:0,normal:new l,point:new l,touching:!1}}var gx=1e-12,_x={maxSteps:32},vx=0,yx=0,bx=new l;function xx(e,t){let{corners:n,starts:r,neighbours:i,seeds:a}=e.hull,{x:o,y:s,z:c}=t,l=e.start;if(l<0){let e=-1/0;for(let n=0;n<a.length;n++){let r=lx[n].dot(t);r<=e||(e=r,l=a[n])}}let u=o*n[3*l]+s*n[3*l+1]+c*n[3*l+2],d=r.length-1;for(let e=l,t=0;t<d;l=e,t++){for(let t=r[l];t<r[l+1];t++){let r=3*i[t],a=o*n[r]+s*n[r+1]+c*n[r+2];a<=u||(u=a,e=i[t])}if(e===l)break}return vx=l,e.start=l,u}function Sx(e,t){xx(e,t),yx=t.dot(e.axis)>=0?1:-1,bx.fromArray(e.hull.corners,3*vx).addScaledVector(e.axis,yx*e.reach)}function Cx(e,t,n){let r=xx(e,n)+Math.abs(n.dot(e.axis))*e.reach;return n.dot(t)>=r-e.hull.slack}var wx=[new l,new l,new l],Tx=new Int32Array(3),Ex=new Float64Array(3),Dx=0,Ox=new Float64Array(3),kx=new l,Ax=new l,jx=new l,Mx=new l,Nx=new l,Px=new l;function Fx(e,t,n,r){Tx[t]=n,Ex[t]=r,wx[t].fromArray(e.hull.corners,3*n).addScaledVector(e.axis,r*e.reach)}function Ix(e){fx.subVectors(wx[1],wx[0]),px.subVectors(wx[2],wx[0]);let t=fx.dot(fx),n=fx.dot(px),r=px.dot(px),i=e.dot(fx),a=e.dot(px),o=t*r-n*n;Ox[1]=(r*i-n*a)/o,Ox[2]=(t*a-n*i)/o,Ox[0]=1-Ox[1]-Ox[2]}function Lx(e){let{centre:t,along:n,radius:r}=e;if(kx.subVectors(t,wx[0]),Dx===1){Ox[0]=1;let e=kx.lengthSq()-r*r;return e>0?lb(1,kx.dot(n),e):1/0}if(Ax.subVectors(wx[1],wx[0]),Dx===2){let e=Ax.lengthSq();if(!(e>0))return 1/0;let t=kx.dot(Ax)/e,i=n.dot(Ax)/e;jx.copy(kx).addScaledVector(Ax,-t),Mx.copy(n).addScaledVector(Ax,-i);let a=jx.lengthSq()-r*r;if(!(a>0))return 1/0;let o=lb(Mx.lengthSq(),jx.dot(Mx),a),s=t+o*i;return s>=0&&s<=1?(Ox[0]=1-s,Ox[1]=s,o):1/0}Nx.subVectors(wx[2],wx[0]).cross(Ax);let i=Nx.length();if(!(i>0))return 1/0;Nx.divideScalar(i);let a=Nx.dot(kx);a<0&&(Nx.negate(),a=-a);let o=Nx.dot(n);if(!(o<0&&a>r))return 1/0;let s=(a-r)/-o;return Px.copy(kx).addScaledVector(n,s).addScaledVector(Nx,-r),Ix(Px),Ox[0]>=0&&Ox[1]>=0&&Ox[2]>=0?s:1/0}function Rx(e){e.set(0,0,0);for(let t=0;t<Dx;t++)e.addScaledVector(wx[t],Ox[t]);return e}var zx=1/0,Bx=new Int32Array(3),Vx=new Float64Array(3),Hx=new Float64Array(3),Ux=0,Wx=new l;function Gx(){Ux=Dx,Bx.set(Tx),Vx.set(Ex),Hx.set(Ox)}function Kx(e,t){t>=0&&t<zx&&(Rx(Px),Mx.copy(e.centre).addScaledVector(e.along,t).sub(Px).divideScalar(e.radius),Cx(e,Px,Mx)&&(zx=t,Gx(),Wx.copy(Mx)))}function qx(e){let{centre:t}=e;if(Ox.fill(0),Ox[0]=1,Dx===2){Ax.subVectors(wx[1],wx[0]),kx.subVectors(t,wx[0]);let e=kx.dot(Ax)/Ax.lengthSq();e>0&&(Ox[1]=Math.min(1,e),Ox[0]=1-Ox[1])}else Dx===3&&(gS(dx.subVectors(wx[0],t),fx.subVectors(wx[1],t),px.subVectors(wx[2],t)),Ix(aS.sub(dx)));Wx.subVectors(t,Rx(Px));let n=Wx.length();return Wx.divideScalar(n),n}var Jx=[new l,new l,new l,new l],Yx=new Int32Array(4),Xx=new Float64Array(4),Zx=0,Qx=new l,$x=new l,eS=new l,tS=0,nS=!1,rS=[new l,new l,new l,new l];function iS(e){for(let t=0;t<e.length;t++){let n=e[t];Yx[t]=Yx[n],Xx[t]=Xx[n],Jx[t].copy(Jx[n])}Zx=e.length}var aS=new l,oS=[0],sS=[0],cS=[1],lS=[2],uS=[0,1],dS=[0,2],fS=[1,2],pS=[0,1,2],mS=new l,hS=new l;function gS(e,t,n){mS.subVectors(t,e),hS.subVectors(n,e);let r=-mS.dot(e),i=-hS.dot(e);if(oS=sS,r<=0&&i<=0)return aS.copy(e);let a=-mS.dot(t),o=-hS.dot(t);if(oS=cS,a>=0&&o<=a)return aS.copy(t);let s=r*o-a*i;if(oS=uS,s<=0&&r>=0&&a<=0)return aS.copy(e).addScaledVector(mS,r/(r-a));let c=-mS.dot(n),l=-hS.dot(n);if(oS=lS,l>=0&&c<=l)return aS.copy(n);let u=c*i-r*l;if(oS=dS,u<=0&&i>=0&&l<=0)return aS.copy(e).addScaledVector(hS,i/(i-l));let d=a*l-c*o;if(oS=fS,d<=0&&o-a>=0&&c-l>=0)return aS.subVectors(n,t).multiplyScalar((o-a)/(o-a+c-l)).add(t);let f=d+u+s;return oS=pS,aS.copy(e).addScaledVector(mS,u/f).addScaledVector(hS,s/f)}var _S=[[0,1,2,3],[0,2,3,1],[0,3,1,2],[1,3,2,0]],vS=new l,yS=new l,bS=[[0],[0,0],[0,0,0]];function xS(){let e=1/0,t=_S[0],n=sS;for(let r=0;r<_S.length;r++){let i=_S[r],a=rS[i[0]],o=rS[i[1]],s=rS[i[2]];yS.subVectors(o,a).cross(mS.subVectors(s,a));let c=hS.subVectors(rS[i[3]],a);-yS.dot(a)*yS.dot(c)>0||(gS(a,o,s),!(aS.lengthSq()>=e)&&(e=aS.lengthSq(),vS.copy(aS),t=i,n=oS))}if(e===1/0)return!1;aS.copy(vS);let r=bS[n.length-1];for(let e=0;e<r.length;e++){let i=e,a=t[n[e]];for(;i>0&&r[i-1]>a;i--)r[i]=r[i-1];r[i]=a}return oS=r,!0}function SS(){for(let e=0;e<Zx;e++)rS[e].subVectors(Jx[e],Qx);let e=rS[0],t=rS[1],n=rS[2];if(Zx===1)aS.copy(e),oS=sS;else if(Zx===2){Ax.subVectors(t,e);let n=-e.dot(Ax)/Ax.lengthSq();oS=n>0?n>=1?cS:uS:sS,aS.copy(e).addScaledVector(Ax,Math.max(0,Math.min(1,n)||0))}else if(Zx===3)gS(e,t,n);else if(!xS())return!1;return iS(oS),$x.copy(aS).negate(),!0}function CS(e){let{centre:t,along:n,length:r,radius:i,axis:a,reach:o,hull:s}=e;Qx.copy(t),tS=0,Zx=0,nS=!1,$x.addVectors(s.low,s.high).multiplyScalar(-.5).add(Qx),e.start>=0&&(ux.fromArray(s.corners,3*e.start),$x.subVectors(Qx,ux),$x.addScaledVector(a,$x.dot(a)>=0?-o:o));let c=0;for(;c<_x.maxSteps;c++){let a=$x.length();if(a===0)return!0;Sx(e,$x);let o=$x.dot(ux.subVectors(Qx,bx)),s=!1;if(o>i*a){let e=$x.dot(n);if(e>=0||(tS-=(o-i*a)/e,tS>r))return!1;Qx.copy(t).addScaledVector(n,tS),s=!0}else if(Zx>0&&a-o/a<=gx)break;let c=!1;for(let e=0;e<Zx;e++)Yx[e]===vx&&Xx[e]===yx&&(c=!0);if(c&&!s)break;if(c||(Yx[Zx]=vx,Xx[Zx]=yx,Jx[Zx++].copy(bx)),eS.copy($x),!SS())return $x.set(0,0,0),!0;if(!($x.lengthSq()>=0)){$x.copy(eS);break}}return nS=c===_x.maxSteps,!0}function wS(e){Dx=e.length;for(let t=0;t<Dx;t++)Tx[t]=Yx[e[t]],Ex[t]=Xx[e[t]],wx[t].copy(Jx[e[t]])}var TS=[[pS],[uS,dS,fS],[sS,cS,lS]];function ES(e){zx=1/0;for(let t=Zx;t>0;t--)for(let n=0;n<TS[3-t].length;n++){let r=TS[3-t][n];if(!(r[r.length-1]>=Zx)&&(wS(r),Kx(e,Lx(e)),zx!==1/0))return}}function DS(e){Dx=e.lastSize;for(let t=0;t<Dx;t++)Fx(e,t,e.lastCorners[t],e.lastSigns[t])}function OS(e){e.lastSize=Ux,e.lastCorners.set(Bx),e.lastSigns.set(Vx),e.normal.copy(Wx),e.point.set(0,0,0);for(let t=0;t<Ux;t++)e.point.addScaledVector(ux.fromArray(e.hull.corners,3*Bx[t]),Hx[t])}function kS(e,t){return Px.copy(e.centre).addScaledVector(Wx,-t),t>0&&Cx(e,Px,Wx)}var AS=0;function jS(e){let{along:t,length:n,radius:r}=e;DS(e);let i=qx(e);if(kS(e,i)){let a=t.dot(Wx);if(i<r+1e-9)return e.touching=!0,Gx(),OS(e),AS=a<-1e-9?0:1/0,!0;if(i+a*n>r)return AS=1/0,!0}return zx=1/0,Kx(e,Lx(e)),zx!==1/0&&(OS(e),AS=zx<=n?zx:1/0,!0)}function MS(e){return zx=tS,Dx=Math.min(Zx,1),Dx===1&&wS(sS),Ox[0]=1,Gx(),$x.lengthSq()>0?Wx.copy($x).normalize():Wx.copy(e.along).negate(),OS(e),zx<=e.length?zx:1/0}function NS(e){return e.touching=!1,e.lastSize>0&&jS(e)?AS:CS(e)?tS===0&&$x.lengthSq()===0?NaN:Zx===4?MS(e):tS===0&&!nS?(e.touching=!0,wS(TS[3-Zx][0]),qx(e),Gx(),OS(e),e.along.dot(e.normal)<-1e-9?0:1/0):(ES(e),zx===1/0?MS(e):(OS(e),zx<=e.length?zx:1/0)):1/0}function PS(e,t){let n=e.radius;e.radius=t,DS(e);let r=Lx(e)<=e.length;return e.radius=n,r}function FS(e){if(e.lastSize>0&&(DS(e),kS(e,qx(e))))return!1;let{length:t,radius:n}=e;e.length=0,e.radius=0;let r=CS(e)&&$x.lengthSq()===0;return e.length=t,e.radius=n,r}var IS={collider:null,body:null,normal:new l,point:new l},LS=new WeakMap,RS=[],zS=new Map,BS=0,VS=!1,HS={x:0,y:0,z:0},US={x:0,y:0,z:0,w:1},WS=new l,GS=new l,KS=new l,qS=new l,JS=new l;function YS(){BS=0,zS.clear()}function XS(){return VS}function ZS(e,t){let n=LS.get(t);if(!n){let r=e.colliders.raw.coVertices(t.handle),i=e.colliders.raw.coIndices(t.handle);if(!r||!i)return;n=mx(r,i),LS.set(t,n)}let r=RS[BS]??={collider:t,body:null,position:new l,rotation:new f,inverse:new f,centre:new l,sweep:hx(n)};r.collider=t,r.sweep.hull=n,r.sweep.start=-1,r.sweep.lastSize=0;let i=t.parent();r.body=i?.isDynamic()?i:null,r.position.copy(t.translation(HS)),r.rotation.copy(t.rotation(US)).normalize(),r.inverse.copy(r.rotation).invert(),r.centre.addVectors(n.low,n.high).multiplyScalar(.5).applyQuaternion(r.rotation).add(r.position),zS.set(t,BS++)}function QS(e,t,n){let{sweep:r}=e;r.centre.copy(t).sub(e.position).applyQuaternion(e.inverse),r.axis.set(0,1,0).applyQuaternion(e.inverse),r.reach=n}function $S(e){let{hull:t,centre:n,axis:r,reach:i,along:a,length:o,radius:s}=e;for(let e=0;e<3;e++){let c=n.getComponent(e),l=c+o*a.getComponent(e),u=Math.abs(r.getComponent(e))*i+s;if(Math.min(c,l)-u>t.high.getComponent(e)||Math.max(c,l)+u<t.low.getComponent(e))return!0}return!1}function eC(e,t,n){let r=zS.get(e);if(r===void 0)return!0;let i=RS[r],{sweep:a}=i,o=a.start;QS(i,t,n),a.length=0,a.radius=0;let s=!$S(a)&&FS(a);return a.start=o,s}function tC(e,t){return e.y===t.y?e.x===t.x?e.z===t.z?0:e.z>t.z?1:-1:e.x>t.x?1:-1:e.y>t.y?1:-1}function nC(e,t,n){let r=tC(t,IS.normal);if(r!==0)return r>0;let i=tC(n,IS.point);return i===0?tC(e.centre,JS)>0:i>0}function rC(e){let{centre:t,along:n,length:r,halfHeight:i,radius:a,dynamic:o,predicate:s}=e,c=1/0;VS=!1;for(let e=0;e<BS;e++){let l=RS[e];if(l.body&&!o||s&&!s(l.collider))continue;let{sweep:u}=l;if(QS(l,t,i),u.along.copy(n).applyQuaternion(l.inverse),u.radius=a,u.length=r,$S(u))continue;VS=!0;let d=NS(u);if(d<=r){if(!u.touching&&!PS(u,a-1e-5)){if(WS.copy(u.normal),GS.copy(u.point),u.radius=a-Mb,NS(u)===1/0)continue;u.normal.copy(WS),u.point.copy(GS)}KS.copy(u.normal).applyQuaternion(l.rotation),qS.copy(u.point).applyQuaternion(l.rotation).add(l.position),!(d>c)&&(d!==c||nC(l,KS,qS))&&(c=d,IS.collider=l.collider,IS.body=l.body,IS.normal.copy(KS),IS.point.copy(qS),JS.copy(l.centre))}}return c}function iC({from:e,along:t,radius:n},r){let i=e.y-r;return lb(1,e.x*t.x+i*t.y+e.z*t.z,e.x*e.x+i*i+e.z*e.z-n*n)}function aC(e){let{from:t,along:n,length:r,reach:i,radius:a,normal:o}=e,s=Math.max(-i,Math.min(i,t.y)),c=0;if(z(t.x,t.y-s,t.z)>a){c=Math.min(iC(e,i),iC(e,-i));let r=lb(n.x*n.x+n.z*n.z,t.x*n.x+t.z*n.z,t.x*t.x+t.z*t.z-a*a);r>=0&&r<c&&Math.abs(t.y+r*n.y)<=i&&(c=r)}if(c>r)return 1/0;let l=t.x+n.x*c,u=t.y+n.y*c,d=t.z+n.z*c,f=u-Math.max(-i,Math.min(i,u)),p=z(l,f,d);return p===0?1/0:(o.x=l/p,o.y=f/p,o.z=d/p,pb(n,o)<-1e-9?c:1/0)}var oC=1,sC={walker:null,normal:{x:0,y:1,z:0},point:{x:0,y:0,z:0}},cC=[],lC=[],uC=[],dC=[],fC=0,pC=!1,mC={x:0,y:0,z:0},hC={x:0,y:0,z:0},gC={x:0,y:0,z:0},_C={x:0,y:0,z:0},vC={x:0,y:0,z:0},yC={x:0,y:0,z:0},bC={x:0,y:0,z:0},xC,SC={from:{x:0,y:0,z:0},along:{x:0,y:1,z:0},length:0,reach:0,radius:0,normal:{x:0,y:1,z:0}};function CC(){pC=!1}function wC(e,t){return!!(e>>>16&t&65535)&&!!(t>>>16&e&65535)}function TC(e){let t=e.shape,{ShapeType:n}=B(),{world:r,collider:i,walkerGroups:a,boxGroups:o}=xC;if(t.type===n.Cuboid&&wC(o,e.collisionGroups())&&tx(e,t.halfExtents),t.type===n.ConvexPolyhedron&&wC(o,e.collisionGroups())&&ZS(r,e),t.type!==n.Capsule||e.handle===i.handle||!wC(a,e.collisionGroups()))return!0;let{halfHeight:s,radius:c}=t;return e.translation(bC),cC[fC]=e,lC[3*fC]=bC.x,lC[3*fC+1]=bC.y,lC[3*fC+2]=bC.z,uC[fC]=s,dC[fC]=c,fC++,!0}function EC(e){pC&&gC.x>=mC.x&&gC.y>=mC.y&&gC.z>=mC.z&&_C.x<=hC.x&&_C.y<=hC.y&&_C.z<=hC.z||(mC.x=gC.x-oC,mC.y=gC.y-oC,mC.z=gC.z-oC,hC.x=_C.x+oC,hC.y=_C.y+oC,hC.z=_C.z+oC,vC.x=(mC.x+hC.x)/2,vC.y=(mC.y+hC.y)/2,vC.z=(mC.z+hC.z)/2,yC.x=(hC.x-mC.x)/2,yC.y=(hC.y-mC.y)/2,yC.z=(hC.z-mC.z)/2,pC=!0,xC=e,fC=0,$b(),YS(),e.world.collidersWithAabbIntersectingAabb(vC,yC,TC))}function DC(e,t){let{normal:n,point:r}=sC,i=lC[3*e+1],a=dC[e],o=Math.max(i-uC[e],Math.min(i+uC[e],t));r.x=lC[3*e]+n.x*a,r.y=o+n.y*a,r.z=lC[3*e+2]+n.z*a}function OC(e){let{collider:t,centre:n,along:r,length:i}=e,{halfHeight:a,radius:o}=t.shape,s=o+T.offset,c=s+a,l=n.x+r.x*i,u=n.y+r.y*i,d=n.z+r.z*i;gC.x=Math.min(n.x,l)-s,gC.y=Math.min(n.y,u)-c,gC.z=Math.min(n.z,d)-s,_C.x=Math.max(n.x,l)+s,_C.y=Math.max(n.y,u)+c,_C.z=Math.max(n.z,d)+s,EC(e)}function kC(e){let{collider:t,centre:n,along:r,length:i,predicate:a}=e,{halfHeight:o,radius:s}=t.shape;OC(e);let{from:c,normal:l}=SC;SC.along=r;let u=1/0;for(let e=0;e<fC;e++){let t=cC[e];if(a&&!a(t))continue;c.x=n.x-lC[3*e],c.y=n.y-lC[3*e+1],c.z=n.z-lC[3*e+2],SC.length=Math.min(u,i),SC.reach=o+uC[e],SC.radius=s+dC[e]+T.offset;let d=aC(SC);d!==1/0&&(u=d,sC.walker=t,sC.normal.x=l.x,sC.normal.y=l.y,sC.normal.z=l.z,DC(e,n.y+r.y*d))}return u}function AC({mover:e,target:t,players:n}){for(let r of n){if(!wC(e.groups,r.groups))continue;let n=e.radius+r.radius+T.offset,i=Math.max(0,Math.abs(e.centre.y-r.centre.y)-e.reach-r.reach);if(i>=n)continue;let a=Math.sqrt(n*n-i*i),o=t.x-r.centre.x,s=t.z-r.centre.z,c=z(o,s);c>=a||(c===0?o=1:(o/=c,s/=c),t.x=r.centre.x+o*a,t.z=r.centre.z+s*a)}}var jC={halfExtents:{x:1,y:1,z:1}};function MC({query:e,polygon:t,from:n,to:r}){let i=t;if(!i){let t=e.findNearestPoly(n,jC);if(!t.success||!t.nearestRef)return 0;i=t.nearestRef,n.x=t.nearestPoint.x,n.z=t.nearestPoint.z}let a=e.moveAlongSurface(i,n,r);return a.success?(r.x=a.resultPosition.x,r.z=a.resultPosition.z,a.visited.at(-1)??i):0}var NC=4,PC={x:0,y:0,z:0},FC,IC,LC=!1,RC={x:0,y:0,z:0},zC={x:0,y:0,z:0},BC={x:0,y:0,z:0},VC={x:0,y:0,z:0},HC={x:0,y:0,z:0},UC={x:0,y:0,z:0};function WC(e){let{shape:t,position:n,rotation:r,skin:i,predicate:a}=IC;if(a&&!a(e))return!0;let o=e.contactShape(t,n,r,i,FC);if(!o)return!0;FC=o;let{normal1:s,distance:c}=o,l=PC.x*s.x+PC.y*s.y+PC.z*s.z,u=i-c-l;if(u<=0)return!0;PC.x+=s.x*u,PC.y+=s.y*u,PC.z+=s.z*u,LC=!0;let d=e.parent(),f=IC.pushedVelocity;return f&&d?.isKinematic()&&GC(d,o,f),!0}function GC(e,t,n){let r=e.linvel(VC),i=e.angvel(HC),a=e.translation(UC);RC.x=t.point1.x-a.x,RC.y=t.point1.y-a.y,RC.z=t.point1.z-a.z,zC.x=i.y*RC.z-i.z*RC.y,zC.y=i.z*RC.x-i.x*RC.z,zC.z=i.x*RC.y-i.y*RC.x,BC.x=r.x+zC.x,BC.y=r.y+zC.y,BC.z=r.z+zC.z,n.x+=BC.x,n.y+=BC.y,n.z+=BC.z}function KC(e){IC=e;let{world:t,shape:n,position:r,rotation:i}=e,a=0;for(let o=0;o<NC;o++){if(PC.x=0,PC.y=0,PC.z=0,LC=!1,t.intersectionsWithShape(r,i,n,WC,e.flags,e.groups,e.excludeCollider,e.excludeBody),!LC)return!0;let o=z(PC.x,PC.y,PC.z),s=Math.min(o,e.maxDistance-a);if(s<=0)return!1;let c=s/o;r.x+=PC.x*c,r.y+=PC.y*c,r.z+=PC.z*c,a+=s}return!qC(e)}function qC(e){IC=e,PC.x=0,PC.y=0,PC.z=0,LC=!1;let t=e.pushedVelocity;return e.pushedVelocity=void 0,e.world.intersectionsWithShape(e.position,e.rotation,e.shape,WC,e.flags,e.groups,e.excludeCollider,e.excludeBody),e.pushedVelocity=t,LC}function JC(){let{QueryFilterFlags:e}=B();return e.EXCLUDE_DYNAMIC|e.EXCLUDE_SENSORS}function YC(e){return e.parent()?.userData??null}var XC=0;function ZC(){XC++}function QC(){return XC}var $C=function(e){return e.DynamicMover=`dynamic-mover`,e.CharacterMover=`character-mover`,e.NotKinematic=`not-kinematic`,e.SecondMove=`second-move`,e.VerticalVelocity=`vertical-velocity`,e}({});function ew(){return{entity:null,point:new l,normal:new l,distance:0}}var tw=new WeakMap;function nw(e,t,n,r){let i=`${r} The system that moved it: ${Pt()??`none`}.`;if(e.has(j))throw S(Error(i),`SP0560`,void 0,t);let a=tw.get(e);a||tw.set(e,a=new Set);let o=`${t}:${n}`;return a.has(o)||(a.add(o),console.error(i)),n}function rw(){let e=new Map;return Ec((t,n)=>e.delete(n)),e}var iw=rw(),aw=rw();function ow(e){let t=QC(),n=iw.get(e)===t;return iw.set(e,t),n}function sw(e){let t=QC(),n=aw.get(e)!==t;return aw.set(e,t),n}function cw(e,t,n){if(e.rerunEntity&&e.rerunEntity!==t)throw S(Error(`${n} moved entity ${t.id()} on a re-run of entity ${e.rerunEntity.id()}: on a step with step.rerunEntity, move that entity and no other.`),`SP0561`,void 0,t)}function lw(e,t){!t&&!e.has(Bp)?e.add(Bp):t&&e.has(Bp)&&e.remove(Bp)}function uw(){return{displacement:new l,realVelocity:new l,slideVelocity:new l,isGrounded:!1,floorNormal:new l(0,1,0),standingOn:null,isOnWall:!1,wallNormal:new l,isOnCeiling:!1,isBlocked:!1,remaining:0,isStuck:!1,hits:[],addedVelocity:new l}}var dw=16,fw=rw(),pw=new WeakMap;function mw(e){let t=fw.get(e);return t||(t=uw(),fw.set(e,t),pw.set(t,Array.from({length:dw},ew))),t}var hw=new l,gw=new l,_w=new l,vw=new l,yw=new l,bw=new l,xw=[new l,new l,new l],Sw=new l,Cw=new f,ww=new l,Tw=new f,Ew={x:0,y:0,z:0},Dw={x:0,y:0,z:0,w:1},Ow=new l,kw=new l,Aw=new l,jw=null,Mw;function Nw(e,t,n){let{world:r}=e,i=mw(t);if(vT(i),cw(e,t,`moveAndSlide`),yT(n),t.has(M))return nw(r,t,$C.CharacterMover,`moveAndSlide was handed entity ${t.id()}, a character (character-mover): move a character with moveCharacter, which keeps her floor, her platform and her vertical speed.`),i;let a=wc(t,el)?.bodyType;if(a!==R.Kinematic)return nw(r,t,a===R.Dynamic?$C.DynamicMover:$C.NotKinematic,a===R.Dynamic?`moveAndSlide was handed entity ${t.id()}, a dynamic body (dynamic-mover): push a dynamic body with applyImpulse, applyForce or setLinearVelocity.`:`moveAndSlide was handed entity ${t.id()}, which has no kinematic body (not-kinematic): declare body: { bodyType: RigidBodyType.Kinematic } and a collider on it.`),i;let o=e.rerunEntity!==void 0;o||sA(r);let s=XD(r),c=s&&cd(r,s,t);return Iw(t,i),!s||!c?i:(rk(s),Lw(s,t,c,n,i,e.deltaSeconds),!o&&!s.slidBodies.has(t)&&s.slidBodies.set(t,Fw(t)),i)}var Pw=rw();function Fw(e){let t=Pw.get(e);return t||(t={position:new l,rotation:new f},Pw.set(e,t)),t.position.copy(Sw),t.rotation.copy(Cw),t}function Iw(e,t){if(!sw(e))return;let n=e.get(Li);n&&n.velocity.lengthSq()!==0&&(t.addedVelocity.copy(n.velocity),n.velocity.set(0,0,0),e.set(Li,n))}function Lw(e,t,n,r,i,a){let o=T.offset,s=Math.min(r.maxSlides??6,dw),c=Gs(r.maxSlopeRadians??Math.PI/4);vw.set(r.up?.x??0,r.up?.y??1,r.up?.z??0),vw.normalize();let l=n.translation(uT);Sw.set(l.x,l.y,l.z);let u=n.rotation(dT);Cw.set(u.x,u.y,u.z,u.w),ww.copy(Sw),Tw.copy(Cw),i.isStuck=!mT(e,n,o),lw(t,!i.isStuck),hw.set(r.velocity.x,r.velocity.y,r.velocity.z).multiplyScalar(a),_w.set(r.velocity.x,r.velocity.y,r.velocity.z);let d=0,f=0;for(;f<s;){let t=hw.length();if(t<o*.01){hw.set(0,0,0);break}f++,gw.copy(hw).divideScalar(t);let r=Zw(e,n,gw,t);if(r===1/0){ww.add(hw),hw.set(0,0,0);break}if(ww.addScaledVector(gw,r),hw.multiplyScalar(1-r/t),hT(i,r),d<3&&xw[d++].copy(kw),d===1)Xw(hw,xw[0]),Xw(_w,xw[0]);else if(d===2){if(bw.crossVectors(xw[0],xw[1]),bw.lengthSq()<1e-12)Xw(hw,xw[1]),Xw(_w,xw[1]);else{bw.normalize();let e=hw.dot(bw),t=_w.dot(bw);hw.copy(bw).multiplyScalar(e),_w.copy(bw).multiplyScalar(t)}}else{_w.set(0,0,0);break}}if(i.remaining=hw.length(),i.isBlocked=i.remaining>=o,r.rotation){let{x:t,y:i,z:a,w:s}=r.rotation;Tw.set(t,i,a,s),mT(e,n,o)}let p=r.floorSnapDistance??0;if(p>0&&_w.dot(vw)<=0){gw.copy(vw).negate();let t=Zw(e,n,gw,p);t!==1/0&&kw.dot(vw)>=c&&(ww.addScaledVector(gw,t),hT(i,t))}_T(i,c),i.isGrounded&&gT(e,n,i,c),zd(e,t,{position:ww,rotation:Tw}),i.displacement.subVectors(ww,Sw),i.realVelocity.copy(i.displacement).divideScalar(a),i.slideVelocity.copy(_w)}var Rw=new Set,zw=new l,Bw=new l,Vw={x:0,y:0,z:0},Hw={x:0,y:0,z:0},Uw,Ww=0;function Gw(e,t){e.slidBodies.forEach((n,r)=>{let i=e.bodies.get(r);n&&i&&i.isKinematic()&&(i.translation(uT),ww.set(uT.x,uT.y,uT.z),i.rotation(dT),Tw.set(dT.x,dT.y,dT.z,dT.w),Sw.copy(n.position),Kw(e,i,t))})}function Kw(e,t,n){let{QueryFilterFlags:r}=B(),i=r.EXCLUDE_FIXED|r.EXCLUDE_KINEMATIC|r.EXCLUDE_SENSORS;Bw.subVectors(ww,Sw);let a=Bw.length();if(a!==0){Rw.clear(),Uw=t,Ww=n,Bw.divideScalar(a);for(let r=0;r<t.numColliders();r++){let o=t.collider(r);if(o.isSensor())continue;pT(o,t);let s=Ew.x,c=Ew.y,l=Ew.z;Ow.set(s-Bw.x*a,c-Bw.y*a,l-Bw.z*a);let u=o.collisionGroups();for(tT=e.world,nT=o,qw=o.solverGroups();;){let r=e.world.castShape(Ow,Dw,Bw,o.shape,0,a,!1,i,u,void 0,t,Jw)?.collider.parent();if(!r)break;Yw(r,a/n)}}Uw=void 0}}var qw=0;function Jw(e){let t=e.parent();return t!==null&&!Rw.has(t.handle)&&wC(qw,e.solverGroups())&&iT(e)}function Yw(e,t){if(Rw.add(e.handle),!Uw)return;e.linvel(Vw),e.translation(Hw),zw.copy(Bw);let n=t-(Vw.x*zw.x+Vw.y*zw.y+Vw.z*zw.z);if(n<=0||Ww<=0)return;let r=n*e.mass();e.applyImpulse({x:zw.x*r,y:zw.y*r,z:zw.z*r},!0)}function Xw(e,t){let n=e.dot(t);n<0&&e.addScaledVector(t,-n)}function Zw(e,t,n,r){let{QueryFilterFlags:i}=B(),a=1/0;yw.subVectors(ww,Sw);for(let o=0;o<t.numColliders();o++){let s=t.collider(o);if(!s.isSensor()){pT(s,t),Ow.set(Ew.x,Ew.y,Ew.z),eT.length=0,tT=e.world,nT=s;for(let o=0;o<$w;o++){let o=e.world.castShape(Ow,Dw,n,s.shape,T.offset,r,!1,i.EXCLUDE_DYNAMIC|i.EXCLUDE_SENSORS,s.collisionGroups(),void 0,t,rT);if(!o)break;if(n.x*o.normal1.x+n.y*o.normal1.y+n.z*o.normal1.z>-Qw){eT.push(o.collider.handle);continue}o.time_of_impact<a&&(a=o.time_of_impact,kw.set(o.normal1.x,o.normal1.y,o.normal1.z),Aw.set(o.witness1.x,o.witness1.y,o.witness1.z),jw=o.collider);break}}}return a}var Qw=.01,$w=4,eT=[],tT,nT;function rT(e){return!eT.includes(e.handle)&&iT(e)}function iT(e){return!tT||!nT||!wd(tT,nT,e)}var aT=new f,oT=new l,sT=new f,cT={x:0,y:0,z:0},lT={x:0,y:0,z:0,w:1},uT={x:0,y:0,z:0},dT={x:0,y:0,z:0,w:1},fT={x:0,y:0,z:0};function pT(e,t){let n=e.translation(cT),r=e.rotation(lT);t.translation(uT),t.rotation(dT),aT.set(dT.x,dT.y,dT.z,dT.w).invert(),oT.set(n.x-uT.x,n.y-uT.y,n.z-uT.z).applyQuaternion(aT),sT.set(r.x,r.y,r.z,r.w).premultiply(aT),oT.applyQuaternion(Tw).add(ww),sT.premultiply(Tw),Ew.x=oT.x,Ew.y=oT.y,Ew.z=oT.z,Dw.x=sT.x,Dw.y=sT.y,Dw.z=sT.z,Dw.w=sT.w}function mT(e,t,n){let r=!0;for(let i=0;i<t.numColliders();i++){let a=t.collider(i);a.isSensor()||(pT(a,t),fT.x=Ew.x,fT.y=Ew.y,fT.z=Ew.z,Mw??={world:e.world,shape:a.shape,position:Ew,rotation:Dw,groups:0,flags:JC(),skin:n,maxDistance:1/0},Mw.world=e.world,Mw.shape=a.shape,Mw.position=Ew,Mw.rotation=Dw,Mw.groups=a.collisionGroups(),Mw.flags=JC(),Mw.excludeBody=t,Mw.excludeCollider=void 0,Mw.predicate=iT,Mw.skin=n*.5,tT=e.world,nT=a,KC(Mw)||(r=!1),ww.x+=Ew.x-fT.x,ww.y+=Ew.y-fT.y,ww.z+=Ew.z-fT.z)}return r}function hT(e,t){let n=pw.get(e);if(!n||e.hits.length>=n.length)return;let r=n[e.hits.length];r.entity=jw?YC(jw):null,r.normal.copy(kw),r.point.copy(Aw),r.distance=t,e.hits.push(r)}function gT(e,t,n,r){if(gw.copy(vw).negate(),Zw(e,t,gw,T.offset)===1/0||kw.dot(vw)<r){n.isGrounded=!1,n.floorNormal.set(0,1,0),n.standingOn=null;return}n.floorNormal.copy(kw),n.standingOn=jw?YC(jw):null}function _T(e,t){for(let n of e.hits){let r=n.normal.dot(vw);r>=t?(e.isGrounded=!0,e.floorNormal.copy(n.normal),e.standingOn=n.entity):-r>=t?e.isOnCeiling=!0:(e.isOnWall=!0,e.wallNormal.copy(n.normal))}}function vT(e){e.displacement.set(0,0,0),e.realVelocity.set(0,0,0),e.slideVelocity.set(0,0,0),e.isGrounded=!1,e.floorNormal.set(0,1,0),e.standingOn=null,e.isOnWall=!1,e.wallNormal.set(0,0,0),e.isOnCeiling=!1,e.isBlocked=!1,e.remaining=0,e.isStuck=!1,e.hits.length=0,e.addedVelocity.set(0,0,0)}function yT({velocity:e,maxSlides:t,maxSlopeRadians:n}){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(e.z))throw S(Error(`moveAndSlide: the velocity (${e.x}, ${e.y}, ${e.z}) is not finite; pass metres a second along each axis.`),`SP0556`,void 0);if(t!==void 0&&!(Number.isInteger(t)&&t>=1))throw S(Error(`moveAndSlide: maxSlides is ${t}; pass a whole number of at least 1.`),`SP0557`,void 0);if(n!==void 0&&!(n>=0&&n<=Math.PI))throw S(Error(`moveAndSlide: maxSlopeRadians is ${n}; pass an angle from 0 to π.`),`SP0558`,void 0)}var bT={reuse:!0,check:!1,checkedHits:0,checkDifferences:0};function xT(){return{x:0,y:0,z:0}}function ST(){return{fallSpeed:0,grounded:!0,floorNormal:{x:0,y:1,z:0},floorRead:!1,perchAt:xT()}}function CT(){return{entity:null,valid:!1,reused:!1,clear:!1,tied:!1,refused:!1,handle:null,fixedChanges:0,deltaSeconds:0,gravity:0,offset:0,jumpHeight:0,radius:0,height:0,step:0,floorSnapDistance:0,climbCosine:0,groups:0,start:xT(),target:xT(),before:ST(),low:xT(),high:xT(),walked:!1,centre:xT(),drop:0,position:xT(),after:ST()}}function wT(e,t){e.x=t.x,e.y=t.y,e.z=t.z}function TT(e,t){return Object.is(e.x,t.x)&&Object.is(e.y,t.y)&&Object.is(e.z,t.z)}function ET(e,t){e.fallSpeed=t.fallSpeed,e.grounded=t.grounded,wT(e.floorNormal,t.floorNormal),e.floorRead=t.floorRead,e.floor=t.floor,e.perch=t.perch,wT(e.perchAt,t.perchAt)}function DT(e,t){return Object.is(e.fallSpeed,t.fallSpeed)&&e.grounded===t.grounded&&TT(e.floorNormal,t.floorNormal)&&e.floorRead===t.floorRead&&e.floor===t.floor&&e.perch===t.perch&&TT(e.perchAt,t.perchAt)}function OT(e,t){return e.entity===t.entity&&e.handle===t.handle&&e.fixedChanges===t.fixedChanges&&Object.is(e.deltaSeconds,t.deltaSeconds)&&Object.is(e.gravity,t.gravity)&&Object.is(e.offset,t.offset)&&Object.is(e.jumpHeight,t.jumpHeight)&&Object.is(e.radius,t.radius)&&Object.is(e.height,t.height)&&Object.is(e.step,t.step)&&Object.is(e.floorSnapDistance,t.floorSnapDistance)&&Object.is(e.climbCosine,t.climbCosine)&&e.groups===t.groups&&TT(e.start,t.start)&&TT(e.target,t.target)&&DT(e.before,t.before)}function kT(e,t){e.walked=t.walked,wT(e.centre,t.centre),e.drop=t.drop,wT(e.position,t.position),ET(e.after,t.after)}function AT(e,t){return e.walked===t.walked&&TT(e.centre,t.centre)&&Object.is(e.drop,t.drop)&&TT(e.position,t.position)&&DT(e.after,t.after)}var jT={x:0,y:0,z:0,w:1},K={x:0,y:0,z:0},q={x:0,y:0,z:0},MT={x:0,y:0,z:0},J={x:0,y:0,z:0},NT={x:0,y:0,z:0},PT={x:0,y:0,z:0},FT={x:0,y:1,z:0},IT={x:0,y:-1,z:0},LT={remaining:MT,normal:J,input:MT,climbCosine:1},RT={remaining:MT,first:PT,second:J},zT=null,BT=null,VT=null,HT=(fa(ea.players,0)|fa(ea.npcs,0))>>>0,UT=HT>>>16;function WT(e){return e&(4294901760|UT)}var Y=null,GT=null,KT=[];function qT(e){return(e.collisionGroups()&HT)!==0}function JT(e){return!KT.includes(e.handle)}function YT(e,t,n,r=!1,i){let a=QT(e,t,n,r,i);return a!==1/0&&ZT(a),a}var XT={count:0,list:Array.from({length:6},()=>({collider:null,point:{x:0,y:0,z:0},normal:{x:0,y:0,z:0},distance:0}))};function ZT(e){if(XT.count>=6)return;let t=XT.list[XT.count++];t.collider=Y,t.distance=e,t.point.x=NT.x,t.point.y=NT.y,t.point.z=NT.z,t.normal.x=J.x,t.normal.y=J.y,t.normal.z=J.z}function QT(e,t,n,r,i){let{world:a,collider:o,groups:s,centre:c}=e;VT=null;let l=o.shape;BT??={world:a,collider:o,walkerGroups:s,boxGroups:s,centre:c,along:t,length:n},BT.world=a,BT.collider=o,BT.walkerGroups=WT(s),BT.boxGroups=s&~UT,BT.centre=c,BT.along=t,BT.length=n,BT.predicate=e.passes?iE:i,rE=e.passes,OC(BT),$T=c,eE=l.halfHeight,tE=i,nE.centre=c,nE.along=t,nE.length=n,nE.halfHeight=l.halfHeight,nE.radius=l.radius+T.offset,nE.dynamic=r,nE.predicate=i;let u=rC(nE),d=Math.min(n,u),f=r?void 0:B().QueryFilterFlags.EXCLUDE_DYNAMIC,p=ex()||XS()?aE:i,m=a.castShape(c,jT,t,l,T.offset,d,!1,f,s&~UT,o,void 0,p);m&&Ob()&&kb(a.castShape(c,jT,t,l,T.offset,d,!1,f,s&~UT,o,void 0,Eb(m.collider,p))?.time_of_impact,m.time_of_impact),Y=m?.collider??null;let h=1/0;if(m){let e=r?m.collider.parent():null;e?.isDynamic()&&(VT=e),J.x=m.normal1.x,J.y=m.normal1.y,J.z=m.normal1.z,NT.x=m.witness1.x,NT.y=m.witness1.y,NT.z=m.witness1.z,h=m.time_of_impact}u!==1/0&&!(h<u)&&(h=u,Y=IS.collider,VT=IS.body,J.x=IS.normal.x,J.y=IS.normal.y,J.z=IS.normal.z,NT.x=IS.point.x,NT.y=IS.point.y,NT.z=IS.point.z),nE.length=Math.min(n,h);let g=sx(nE);if(g!==1/0&&(h=g,Y=qb.collider,VT=qb.body,J.x=qb.normal.x,J.y=qb.normal.y,J.z=qb.normal.z,NT.x=qb.point.x,NT.y=qb.point.y,NT.z=qb.point.z),(s&UT)===0)return h;BT.length=Math.min(n,h);let _=kC(BT);return _===1/0?h:(Y=sC.walker,VT=null,J.x=sC.normal.x,J.y=sC.normal.y,J.z=sC.normal.z,NT.x=sC.point.x,NT.y=sC.point.y,NT.z=sC.point.z,_)}var $T={x:0,y:0,z:0},eE=0,tE,nE={centre:$T,along:FT,length:0,halfHeight:0,radius:0,dynamic:!1},rE;function iE(e){return!(rE?.includes(e.handle)??!1)&&(tE?.(e)??!0)}function aE(e){return ox(e,$T,eE)&&eC(e,$T,eE)&&(tE?.(e)??!0)}function oE(e,t,n){e.x+=t.x*n,e.y+=t.y*n,e.z+=t.z*n}function sE(e){let t=z(e.x,e.y,e.z);return t<1e-5?0:(q.x=e.x/t,q.y=e.y/t,q.z=e.z/t,t)}function cE(e,t){e.floorNormal.x=t.x,e.floorNormal.y=t.y,e.floorNormal.z=t.z,e.grounded=!0}function lE(e){e.floorNormal.x=0,e.floorNormal.y=1,e.floorNormal.z=0,e.grounded=!1}var uE=.01,dE=Gs(Math.PI/180),fE={x:0,y:0,z:0},pE={x:0,y:0,z:0},mE=null;function hE(e,t){if(J.y>=dE)return!1;let{centre:n,body:r,world:i,groups:a,collider:o}=e,s=NT.x-n.x,c=NT.z-n.z,l=z(s,c),u=l>0?uE/l:0;fE.x=n.x,fE.y=n.y-r.height/2+r.radius,fE.z=n.z,pE.x=NT.x+s*u-fE.x,pE.y=NT.y-fE.y,pE.z=NT.z+c*u-fE.z;let d=z(pE.x,pE.y,pE.z);if(d===0)return!1;pE.x/=d,pE.y/=d,pE.z/=d;let f=B(),p=mE??=new f.Ray(fE,pE);p.origin=fE,p.dir=pE;let m=i.castRayAndGetNormal(p,d+T.offset,!0,f.QueryFilterFlags.EXCLUDE_DYNAMIC,a,o);return m&&Ob()&&kb(i.castRayAndGetNormal(p,d+T.offset,!0,f.QueryFilterFlags.EXCLUDE_DYNAMIC,a,o,void 0,Eb(m.collider))?.timeOfImpact,m.timeOfImpact),m!==null&&!gb(m.normal,t)}function gE(e){let{centre:t,body:n}=e,r=B(),i=zT??=new r.Ray(t,IT);i.origin=t;let a=3*n.height/2+T.offset,o=e.world.castRayAndGetNormal(i,a,!0,r.QueryFilterFlags.EXCLUDE_DYNAMIC,e.groups,e.collider);return o&&Ob()&&kb(e.world.castRayAndGetNormal(i,a,!0,r.QueryFilterFlags.EXCLUDE_DYNAMIC,e.groups,e.collider,void 0,Eb(o.collider))?.timeOfImpact,o.timeOfImpact),o}function _E(e,t){return e!==null&&!gb(e.normal,t)&&!qT(e.collider)&&!(Y!==null&&qT(Y))}function vE(e,t){return e!==null&&e.timeOfImpact<=t.height/2+t.floorSnapDistance+T.offset}function yE(e,t){let n=gE(e);return _E(n,t)?(J.y>=dE&&(J.x=n.normal.x,J.y=n.normal.y,J.z=n.normal.z),!0):!1}function bE(e,t){let{motion:n,centre:r,body:i}=e;GT=null;let a=YT(e,IT,i.floorSnapDistance+T.offset);if(a===1/0){lE(n);return}let o=gE(e),s=o?o.timeOfImpact-i.height/2:0;if(o&&o.timeOfImpact>0&&!qT(o.collider)&&a>s&&(a=s-T.offset,J.x=o.normal.x,J.y=o.normal.y,J.z=o.normal.z,NT.x=r.x,NT.y=r.y-o.timeOfImpact,NT.z=r.z,Y=o.collider),gb(J,t)&&!hE(e,t)&&!_E(o,t)){r.y-=a,cE(n,J);return}if(vE(o,i)&&gb(o.normal,t)){r.y-=a,cE(n,o.normal),Y!==null&&qT(Y)&&(GT=Y,Y=o.collider);return}if(!vE(o,i)&&!_E(o,t)&&a<=T.offset&&J.y>0&&!gb(J,t)&&!hE(e,t)){n.grounded=!0;return}lE(n)}function xE(e,t){MT.x=q.x*(e-t),MT.y=0,MT.z=q.z*(e-t)}function SE(){let e=z(J.x,J.z);return e!==0&&(J.x/=e,J.y=0,J.z/=e,!0)}function CE(e){return e!==0&&Y!==null&&!!(Y.collisionGroups()>>>16&e)}function wE(e,t){let n=-(MT.x*J.x+MT.z*J.z)/t,r=e.linvel(),i=n+r.x*J.x+r.z*J.z;if(i<=0)return;let a=i*e.mass();e.applyImpulse({x:-J.x*a,y:0,z:-J.z*a},!0)}var TE=1/0,EE=3,DE=Gs(Math.PI/180),OE=Ws(Math.PI/180);function kE(){return Math.abs(J.y)<=OE}function AE(e,t){let{centre:n}=e;for(let r=0;;r++){let i=sE(K);if(i===0)return!0;let a=YT(e,q,i,!0);if(a===1/0)return oE(n,q,i),!0;if(oE(n,q,a),xE(i,a),TE=a,VT&&SE())return CE(e.pushes)&&wE(VT,e.deltaSeconds),!1;if(!gb(J,t))return!1;if(r===EE)return!0;oE(n,J,cb),_b(MT,J,K)}}function jE(){return Y!==null&&!VT&&kE()}var ME=!1;function NE(e){return q.x*J.x+q.z*J.z<0&&(!ME||qT(e))}function PE(e,t,n){let{step:r}=e.body;KT.length=0;let i=YT(e,t,r,!0);for(;i!==1/0&&Y&&jE()&&!(n&&NE(Y));)KT.push(Y.handle),i=YT(e,t,r,!0,JT);return i}function FE(e){return Y!==null&&!VT&&(kE()||hb(J,e))}function IE(){let e=q.x*J.x+q.z*J.z;q.x-=e*J.x,q.y=0,q.z-=e*J.z;let t=z(q.x,q.z);if(t===0)return 0;let n=z(J.x,J.z);q.x+=J.x/n*t*OE,q.z+=J.z/n*t*OE;let r=z(q.x,q.z);return q.x/=r,q.z/=r,t}var LE={x:0,y:1,z:0};function RE(e,t){let{centre:n,body:r,motion:i}=e,a=r.radius+T.offset;ME=J.y>OE||z(i.floorNormal.x,i.floorNormal.z)>OE;let o=sE(MT),s=n.y;if(LE.x=i.floorNormal.x,LE.y=i.floorNormal.y,LE.z=i.floorNormal.z,PE(e,FT,!0)!==1/0)return!1;n.y+=r.step;let c=YT(e,q,a,!0);if(c!==1/0&&ME&&FE(t)){let t=IE();o*=t,t>=OE&&o>=1e-5&&(c=YT(e,q,a,!0))}let l=!1;if(c===1/0){oE(n,q,a);let o=PE(e,IT,!1);oE(n,q,-a),o<r.step-T.offset&&!VT&&gb(J,t)&&(n.y-=o,cE(i,J),l=!0)}if(!l)return n.y-=r.step,!1;let u=YT(e,q,o);return u<1e-5?(n.y=s,i.floorNormal.x=LE.x,i.floorNormal.y=LE.y,i.floorNormal.z=LE.z,!1):(oE(n,q,Math.min(u,o)),!0)}var zE={x:0,y:0,z:0};function BE(e){_b(K,e.floorNormal,zE),!(pb(zE,J)<0)&&(K.x=zE.x,K.y=zE.y,K.z=zE.z)}var VE=Gs(5*Math.PI/180),HE={x:0,y:0,z:0};function UE(e,t,n){return n.x=J.x,n.y=J.y,n.z=J.z,!VT&&RE(e,t)?!0:(J.x=n.x,J.y=n.y,J.z=n.z,!1)}function WE(e,t){let{motion:n,desired:r}=e;if(_b(r,n.floorNormal,K),K.y>0&&!gb(n.floorNormal,t)&&(K.x=r.x,K.y=0,K.z=r.z),!AE(e,t)&&!(J.y<-t)){if(TE<1e-5&&Y!==null&&qT(Y))PT.x=J.x,PT.y=J.y,PT.z=J.z;else if(UE(e,t,PT))return;if(vb(LT,K)&&(BE(n),!AE(e,t)&&!(J.y<-t)&&!(pb(J,PT)<VE&&Y!==null&&!qT(Y)&&UE(e,t,HE)))){if(hb(J,t)&&yb(PT,J)){if(!bb(RT,K))return}else{if(!vb(LT,K))return;BE(n)}AE(e,t)}}}function GE(e){let t=q.x*J.x+q.z*J.z;return kE()&&-t*e<=2e-4}var KE=!1;function qE(e,t){let{motion:n,centre:r}=e,i=sE(K);if(i===0)return!0;KT.length=0;let a=YT(e,q,i);for(;a!==1/0&&Y&&qT(Y)&&GE(i);)KT.push(Y.handle),a=YT(e,q,i,!1,JT);if(a===1/0)return oE(r,q,i),!0;if(oE(r,q,a),KE=!1,q.y<0&&gb(J,t)){let r=J.y>=dE;if(KE=hE(e,t)||yE(e,t),!KE)return cE(n,J),!0;if(r){let e=i-a,t=z(J.x,J.z);return MT.x=J.x/t*e,MT.y=0,MT.z=J.z/t*e,!1}}return MT.x=q.x*(i-a),MT.y=q.y*(i-a),MT.z=q.z*(i-a),!1}function JE(e){e.motion.fallSpeed=Math.min(e.motion.fallSpeed,0),K.x=MT.x+cb*J.x,K.y=cb*J.y,K.z=MT.z+cb*J.z}var YE=4,XE={x:0,y:0,z:0};function ZE(){XE.x=PT.y*J.z-PT.z*J.y,XE.y=PT.z*J.x-PT.x*J.z,XE.z=PT.x*J.y-PT.y*J.x;let e=z(XE.x,XE.y,XE.z),t=pb(MT,XE)/e;return K.x=t*XE.x/e+(PT.x+J.x)*cb,K.y=t*XE.y/e+(PT.y+J.y)*cb,K.z=t*XE.z/e+(PT.z+J.z)*cb,Math.abs(t)>=j_}var QE={x:0,y:0,z:0};function $E(){QE.x=PT.x-J.x,QE.z=PT.z-J.z;let e=z(QE.x,QE.z),t=(MT.x*QE.x+MT.z*QE.z)/(e*e);return K.x=MT.x-t*QE.x,K.y=MT.y,K.z=MT.z-t*QE.z,z(K.x,K.y,K.z)>=j_}function eD(e,t){let{desired:n}=e;K.x=n.x,K.y=n.y,K.z=n.z;for(let n=0;;n++){if(qE(e,t))return;let r=J.y<-t;if(r&&JE(e),n===YE){r&&qE(e,t);return}if(!r){let e=n>0&&PT.y>=-t&&(hb(J,t)||kE())&&yb(PT,J),r=e&&pb(PT,J)<=-DE;KE&&(LT.climbCosine=1);let i;if(i=r?$E():e?ZE():vb(LT,K),LT.climbCosine=t,!i)return}PT.x=J.x,PT.y=J.y,PT.z=J.z}}var tD,nD,rD={x:0,y:0,z:0};function iD(e){let{collider:t,centre:n,passes:r}=tD;if(r?.includes(e.handle))return!0;let i=e.contactShape(t.shape,n,jT,0,nD);if(!i||(nD=i,Math.abs(i.normal1.y)>tD.climbCosine))return!0;e.translation(rD);let a=n.x-rD.x,o=n.z-rD.z,s=z(a,o);if(s===0)return!0;let c=(T.offset-i.distance)/s;return K.x+=a*c,K.z+=o*c,!0}function aD(e,t){let{world:n,collider:r,groups:i,centre:a,motion:o,pushes:s}=e;if((i&UT)===0||(tD=e,K.x=0,K.y=0,K.z=0,n.intersectionsWithShape(a,jT,r.shape,iD,B().QueryFilterFlags.EXCLUDE_DYNAMIC,WT(i),r),K.x===0&&K.z===0))return!1;o.grounded&&_b(K,o.floorNormal,K);let c=Y;return e.pushes=0,AE(e,t),e.pushes=s,Y=c,!0}function oD(e){let t=e.grounded?Y:null,n=t&&qT(t)?t:GT;e.floor=t?.handle,e.perch=e.grounded?n?.handle:void 0,e.perch!==void 0&&n?.translation(e.perchAt)}var sD=-1;function cD(e){return e.handle!==sD}function lD(e,t,n){CC(),K.x=t.x,K.y=0,K.z=t.z;let r=sE(K);if(r===0)return!0;sD=n;let i=YT(e,q,r,!0,cD);return oE(e.centre,q,Math.min(i,r)),i===1/0}var uD;function dD(e,t,n,r){uD??={...e},Object.assign(uD,e),uD.groups=e.groups&~UT,CC();let i=YT(uD,t,n);return r.x=J.x,r.y=J.y,r.z=J.z,i}function fD(e){let{motion:t}=e,{grounded:n}=t;CC(),bE(e,e.climbCosine),t.grounded=n,oD(t)}function pD(e){let{motion:t,desired:n,climbCosine:r}=e;XT.count=0,CC(),GT=null,LT.climbCosine=r,LT.input=n;let i=!0;return!t.grounded||n.y>0?(t.grounded=!1,eD(e,r),aD(e,r)&&(i=!1)):(WE(e,r),aD(e,r),bE(e,r)),t.floorRead=i,oD(t),t.grounded&&Y!==null&&qT(Y)}var mD=new Set;function hD(e){let t=e.get(On)?.name;return t===void 0?Mi:Jv(t)||(!mD.has(t)&&cr(e,`A walker drawn as "${t}" takes the default ${Mi.radius} m by ${Mi.height} m capsule: no measured size is registered under that name. Register it with its manifest's entry, registerModel(name, models[id]), or set the Body's radius and height.`)&&mD.add(t),Mi)}function gD({maxSlopeRadians:e}){return Gs(e)}function _D(e){return e.get(Pi)??Fi}function vD(e={}){let t={...Fi};for(let[n,r]of Object.entries(e))r!==void 0&&Object.assign(t,{[n]:r});return t.pushes&&=Zi(t.pushes),t}function yD(e,t){return{radius:e.radius,height:e.height,collisionMask:e.collisionMask,step:t.stepHeight,floorSnapDistance:t.floorSnapDistance}}function bD(e){let t=hD(e);return t===Mi?Mi:{...Mi,...t}}function xD(e){let t=e.get(ji);if(!t)return bD(e);if(t.radius>0&&t.height>0&&t.radius<=t.height/2)return t;if(t.radius<=0||t.height<=0){let n=hD(e);t.radius<=0&&(t.radius=n.radius),t.height<=0&&(t.height=n.height)}return t.radius>t.height/2&&(cr(e,`Entity ${e.id()}'s Body radius ${t.radius} is over half its height ${t.height}; its capsule takes radius ${t.height/2}. Set the radius to at most half the height.`),t.radius=t.height/2),e.set(ji,t),t}function SD({segments:e,size:t,getHeightAt:n}){let r=t/e,i=e+1,a=new Float32Array(i*i);for(let e=0;e<i;e++)for(let o=0;o<i;o++)a[e*i+o]=n({x:e*r-t/2,z:o*r-t/2});return{rows:e,columns:e,heights:a,scale:{x:t,y:1,z:t}}}var CD=-5e-5,wD=1;function TD(e){let t=B(),[n,r,i]=e.gravity,a=new t.World({x:n,y:r,z:i});return a.numSolverIterations=e.solverIterations,{world:a,terrains:new Map,actors:new Map,bodies:new Map,changedBodies:new Set,navMesh:null,placedSinceStep:!1,placedAlone:null,fixedChanges:0,fallen:new Set,joints:new Map,brokenJoints:new Set,forcedBodies:new Set,preparedPass:-1,slidBodies:new Map,unsubscribers:[]}}function ED(e){let t=B(),{rows:n,columns:r,heights:i,scale:a}=SD(e),o=fa($i.ground),s=[t.ColliderDesc.heightfield(n,r,i,a,t.HeightFieldFlags.FIX_INTERNAL_EDGES).setTranslation(CD,0,CD).setCollisionGroups(o)],c=1/0,l=-1/0;for(let e of i)c=Math.min(c,e),l=Math.max(l,e);let u=e.size/2+wD/2,d=(l-c)/2+e.size,f=(l+c)/2;for(let e of[-1,1])s.push(t.ColliderDesc.cuboid(wD/2,d,u).setTranslation(e*u,f,0).setCollisionGroups(o),t.ColliderDesc.cuboid(u,d,wD/2).setTranslation(0,f,e*u).setCollisionGroups(o));return s}var DD={position:{x:0,y:0,z:0},rotation:{x:0,y:0,z:0,w:1}};function OD(e,t,n){let r={body:Qu(e,t,{bodyType:R.Fixed,pose:DD,shapes:ED(n)}),surface:n,obstacles:null,hulls:[]};return e.terrains.set(t,r),AD(e,null),e.fixedChanges++,r}function kD(e,t){let n=e.terrains.get(t);n&&(e.world.removeRigidBody(n.body),e.terrains.delete(t),AD(e,null),e.fixedChanges++)}function AD(e,t){e.placedAlone=e.placedSinceStep&&e.placedAlone!==t?null:t,e.placedSinceStep=!0}function jD(e,t,n){let r=B(),{world:i}=e;for(let e of t.hulls)i.removeCollider(e,!1);if(t.hulls.length=0,AD(e,null),e.fixedChanges++,t.obstacles=n,!n)return;let{geometry:a}=n,o=a.getAttribute(`position`),s=a.index,c=fa($i.ground);for(let{start:e,count:n}of a.groups){let a=new Float32Array(n*3);for(let t=0;t<n;t++){let n=s?s.getX(e+t):e+t;a[t*3]=o.getX(n),a[t*3+1]=o.getY(n),a[t*3+2]=o.getZ(n)}let l=r.ColliderDesc.convexHull(a);l&&t.hulls.push(i.createCollider(l.setCollisionGroups(c),t.body))}}function MD(e){for(let t of e.unsubscribers)t();jd(e),e.world.free()}var X={x:0,y:0,z:0},ND={x:0,y:0,z:0},PD={x:0,y:0,z:0},FD={x:0,y:-1,z:0},ID=new l,LD=new l,RD={drop:0},zD=null,BD;function VD(e,t){let n=e.has(w)?ea.players:ea.npcs,r=E(e);return r?la(r,n,t.collisionMask):fa(n)}function HD(e,t){return B().ColliderDesc.capsule(t.height/2-t.radius,t.radius).setCollisionGroups(VD(e,t))}function UD(e,t,n=xD){let r=e.actors.get(t);if(!r)return;r.motion.floorRead=!1;let i=_D(t),a=yD(n(t),i),o=r.body;if(r.body=a,r.climbCosine=gD(i),a.radius===o.radius&&a.height===o.height){let n=VD(t,a);if(n===r.collider.collisionGroups())return;r.collider.setCollisionGroups(n),fd(e,r.collider.handle);return}e.world.removeCollider(r.collider,!1),r.rigidBody.translation(X),X.y+=(a.height-o.height)/2,r.rigidBody.setTranslation(X,!1),r.collider=e.world.createCollider(HD(t,a),r.rigidBody),jO(e.world,r);let s=t.get(O)?.position;s&&(s.x+=DO.x,s.z+=DO.z),EO(e.world,r),AD(e,t)}var WD=y(Rg),GD=y(Wg);function KD(e){return fn(e,GD)?.get(Wg)?.handle??null}function qD(e){let t=TD(xt(e)),n=e=>UD(t,e);t.unsubscribers.push(e.onAdd(ji,n),e.onChange(ji,n),e.onRemove(ji,e=>UD(t,e,bD)));let r=e=>t.changedBodies.add(e),i=n=>vd(e,t,n);for(let n of[I(el),I(il),I(tl)])t.unsubscribers.push(e.onChange(n,i),e.onAdd(n,i),e.onRemove(n,r));return Sd(),e.has(N)?e.set(N,{handle:t}):e.add(N({handle:t})),t}function JD(e){e.world.bodies.forEach(e=>{e.isDynamic()&&e.wakeUp()});for(let{motion:t}of e.actors.values())t.floorRead=!1}function YD(e,t){t.terrains.forEach((e,n)=>{(n.isAlive()?n.get(Rg)?.surface:void 0)!==e.surface&&(kD(t,n),JD(t))}),D(e,WD,([e],n)=>{let r=t.terrains.get(n)??OD(t,n,e.surface),i=n.get(Ug)?.bvh??null;i!==r.obstacles&&jD(t,r,i)})}function XD(e){let t=e.get(N)?.handle??null;if(!t){if(!I_(e))return null;if(B_(),!nu())return z_(e),null;t=qD(e)}return YD(e,t),t}function ZD(e,t){let n=pn(t,Bg,`ground`),r=n?e.terrains.get(n):void 0;if(r?.surface)return r.surface;for(let t of e.terrains.values())if(t.surface)return t.surface}var QD={fallSpeed:0,grounded:!0,floorRead:!1};function $D(e,t,n=QD){let r=e.get(N)?.handle,i=r?.actors.get(t),a=t.get(O)?.position;if(!r||!i||!a)return;r.world.removeRigidBody(i.rigidBody);let o=TO(r,t,a,n);n.grounded&&n.floorRead&&(rk(r,t),fD({world:r.world,collider:o.collider,groups:o.collider.collisionGroups(),body:o.body,climbCosine:o.climbCosine,motion:o.motion,centre:X})),AD(r,t)}function eO(e,t){let n=Gd(t),r=_d(e,t);(Kd(e,t)||n||r)&&(AD(t,null),t.fixedChanges++)}function tO(e){let t=e.get(N)?.handle;t&&(eO(e,t),Rd(t)&&AD(t,null))}var nO=10,rO=.25,iO={x:0,y:0,z:0,w:1};function aO(e,t,n=t.collisionGroups(),r){let{ShapeType:i}=B();return!e.world.intersectionWithShape(X,iO,t.shape,r,n,t,void 0,e=>e.shape.type!==i.HeightField)}function oO(e,t=b_(e)){let n=e.get(N)?.handle,r=t&&n?.actors.get(t),i=t?.get(O)?.position;if(!t||!n||!r||!i)return!1;if(rk(n),r.rigidBody.translation(X),aO(n,r.collider))return!0;let a=ZD(n,t);if(!a)return!1;let o=a.size/2-r.body.radius,s={x:0,y:0,z:0};for(let c=rO;c<=nO;c+=rO){let l=Math.ceil(2*Math.PI*c/rO);for(let u=0;u<l;u++){let d=2*Math.PI*u/l;if(s.x=i.x+c*Math.cos(d),s.z=i.z+c*Math.sin(d),!(Math.abs(s.x)>o||Math.abs(s.z)>o)&&(s.y=a.getHeightAt(s),wO(s,r.body),aO(n,r.collider)))return i.x=s.x,i.y=s.y,i.z=s.z,$D(e,t),!0}}return!1}function sO(e,t,n){let r=cO(e,t)?.motion;r&&(r.fallSpeed=n,r.grounded=!1,r.floorRead=!1),t.has(M)&&t.set(M,{isGrounded:!1,airSeconds:0,verticalSpeed:n})}function cO(e,t){let n=XD(e);if(!n||n.terrains.size===0)return;eO(e,n);let r=n.actors.get(t);if(r)return r;let i=t.get(O)?.position;if(!i)return;rk(n,t);let a=uO(n,t,lO.copy(i));return AD(n,t),a}var lO=new l;function uO(e,t,n){let r=ZD(e,t);r&&(n.y=r.getHeightAt(n));let i=TO(e,t,n);return EO(e.world,i),i}var dO={x:0,y:0,z:0},fO=new l,pO={x:0,y:0,z:0},mO,hO,gO=T.offset+.01;function _O(e,t,n){let{collider:r,body:i,motion:a,climbCosine:o}=t,s=r.collisionGroups();return mO??={world:e.world,collider:r,groups:s,body:i,climbCosine:o,motion:a,centre:n},mO.world=e.world,mO.collider=r,mO.groups=s,mO.body=i,mO.climbCosine=o,mO.motion=a,mO.centre=n,mO}function vO(e,t){return aO(e,t.collider,t.collider.collisionGroups()&~(HT>>>16),B().QueryFilterFlags.EXCLUDE_DYNAMIC)}function yO(e){return e.shape.type!==B().ShapeType.HeightField}function bO(e,t){let{collider:n,rigidBody:r,body:i}=t;hO??={world:e.world,shape:n.shape,position:X,rotation:iO,groups:0,flags:B().QueryFilterFlags.EXCLUDE_DYNAMIC,skin:0,maxDistance:0},hO.world=e.world,hO.shape=n.shape,hO.position=X,hO.groups=n.collisionGroups()&~(HT>>>16),hO.flags=JC(),hO.excludeCollider=n,hO.excludeBody=r,hO.predicate=yO,hO.skin=T.offset,hO.maxDistance=i.radius+T.offset;let a=X.x,o=X.y,s=X.z;return KC(hO)?!0:(X.x=a,X.y=o,X.z=s,!1)}function xO(e,t,n,r){let i=dD(_O(e,t,dO),FD,n,pO);return i===1/0?(dO.y-=r,!1):(dO.y-=i,gb(pO,t.climbCosine))}function SO(e,t,{to:n,keepFall:r,drawn:i}){let a=t.get(O)?.position;if(!a)return!0;let o=cO(e,t),s=e.get(N)?.handle,c=t.get(M),l=r?c?.verticalSpeed??0:0,u=r?c?.airSeconds??0:0;if(!s||!o)return a.set(n.x,n.y,n.z),c&&t.set(M,{verticalSpeed:l,airSeconds:u,standingOn:null}),i&&CO(t,a,0),!0;rk(s,t);let{body:d}=o,f=ZD(s,t),p=(f?.size??1/0)/2-d.radius;fO.set(_.clamp(n.x,-p,p),n.y,_.clamp(n.z,-p,p)),f&&(fO.y=Math.max(fO.y,f.getHeightAt(fO))),wO(fO,d);let m=bO(s,o);dO.x=X.x,dO.y=X.y,dO.z=X.z;let h=xO(s,o,gO,0);h||(dO.y=X.y);let g=h&&l<=0,ee=g?0:l;a.set(dO.x,dO.y-d.height/2-T.offset,dO.z),$D(e,t,{fallSpeed:ee,grounded:g,floorRead:g}),c&&t.set(M,{isGrounded:g,verticalSpeed:ee,airSeconds:g?0:u,standingOn:null});let te=s.actors.get(t);return i&&te&&(te.rigidBody.translation(X),CO(t,a,WO(s.world,te,g))),m}function CO(e,t,n){e.get(Cn)?.position.copy(t),e.has(wn)&&e.set(wn,{drop:n,previous:n})}function wO(e,t){return X.x=e.x,X.y=e.y+t.height/2+T.offset,X.z=e.z,X}function TO(e,t,n,{fallSpeed:r,grounded:i,floorRead:a}=QD){let o=B(),s=_D(t),c=yD(xD(t),s),{x:l,y:u,z:d}=wO(n,c),f=e.world.createRigidBody(o.RigidBodyDesc.kinematicPositionBased().setTranslation(l,u,d));f.userData=t;let p={rigidBody:f,collider:e.world.createCollider(HD(t,c),f),motion:{...ST(),fallSpeed:r,grounded:i,floorRead:a},body:c,climbCosine:gD(s),polygon:0,moved:{x:0,y:0,z:0},movedPass:-1};return e.actors.set(t,p),p}function EO(e,t){let{body:n,collider:r,rigidBody:i}=t;i.translation(X),X.y+=n.height;let a=e.castShape(X,i.rotation(),FD,r.shape,T.offset,n.height,!1,B().QueryFilterFlags.EXCLUDE_DYNAMIC,r.collisionGroups()&~(HT>>>16),r);!a||a.time_of_impact===0||n.height-a.time_of_impact<1e-5||(X.y-=a.time_of_impact,i.setTranslation(X,!1),r.setTranslation(X))}var DO={x:0,z:0},OO,kO;function AO(e){if(e.shape.type===B().ShapeType.HeightField)return!0;let{collider:t}=kO,n=e.contactShape(t.shape,X,t.rotation(),0,OO);if(!n)return!0;OO=n;let{normal1:r,distance:i}=n;if(r.y>=kO.climbCosine)return!0;let a=z(r.x,r.z);if(a===0)return!0;let o=DO.x*r.x+DO.z*r.z,s=(T.offset-i-o)/a;return s<=0||(DO.x+=r.x/a*s,DO.z+=r.z/a*s,!0)}function jO(e,t){let{collider:n,rigidBody:r}=t;r.translation(X),DO.x=0,DO.z=0,kO=t,e.intersectionsWithShape(X,n.rotation(),n.shape,AO,B().QueryFilterFlags.EXCLUDE_DYNAMIC,n.collisionGroups()&~(HT>>>16),n),(DO.x!==0||DO.z!==0)&&(X.x+=DO.x,X.z+=DO.z,r.setTranslation(X,!1),n.setTranslation(X))}var MO=.05,NO=.01,PO=.1,FO={x:0,y:0,z:0},IO={x:0,y:0,z:0},LO=null;function RO(e,{body:t,rigidBody:n},r,i){return FO.x=X.x,FO.y=X.y-t.height/2+t.radius,FO.z=X.z,e.projectPoint(FO,!0,void 0,r,void 0,n,i)}function zO(e,t){let n=RO(e,t,t.collider.collisionGroups()&~(HT>>>16))?.point;return n?z(n.x-FO.x,n.y-FO.y,n.z-FO.z)<=t.body.radius+T.offset+.01:!1}function BO(e,t){let n=RO(e,t,t.collider.collisionGroups()&(4294901760|HT>>>16))?.point;if(!n)return!1;let r=FO.y-n.y,i=z(n.x-FO.x,r,n.z-FO.z);return i<=t.body.radius+T.offset+.01&&r>i*t.climbCosine}var VO=[];function HO(e,t,n){let r=RO(e,t,n);if(!r)return 1;let i=UO(e,t,n,r.point);if(!Ob())return i;VO.length=0;for(let i=RO(e,t,n,Eb(r.collider));i!==null&&Ab(FO,r.point,i.point);i=RO(e,t,n,Db(i.collider)))VO.push(i.point);for(let r of VO)if(UO(e,t,n,r)!==i){xb.met=!0;break}return i}function UO(e,t,n,r){let i=r.x-X.x,a=r.z-X.z,o=z(i,a),s=o>0?NO/o:0;IO.x=r.x+i*s,IO.y=r.y+PO,IO.z=r.z+a*s;let c=LO??=new(B()).Ray(IO,FD);c.origin=IO;let l=e.castRayAndGetNormal(c,2*PO,!0,void 0,n,void 0,t.rigidBody);return l&&Ob()&&kb(e.castRayAndGetNormal(c,2*PO,!0,void 0,n,void 0,t.rigidBody,Eb(l.collider))?.timeOfImpact,l.timeOfImpact),l&&l.normal.y>0?l.normal.y:1}function WO(e,t,n){if(!n)return 0;if(BO(e,t))return T.offset;let{body:r,collider:i,rigidBody:a}=t,o=i.collisionGroups()&~(HT>>>16),s=zD??=new(B()).Ray(X,FD),c=r.height/2+r.step,l=e.castRayAndGetNormal(s,c,!0,void 0,o,void 0,a);if(!l)return 0;Ob()&&kb(e.castRayAndGetNormal(s,c,!0,void 0,o,void 0,a,Eb(l.collider))?.timeOfImpact,l.timeOfImpact);let u=l.timeOfImpact-r.height/2-T.offset,d=Math.min(l.normal.y,HO(e,t,o));return u<=(r.radius+T.offset)*(1/d-1)+MO?u:0}var GO={x:0,y:0,z:0};function KO(e,t){let n=e.getCollider(t);return n?.handle===t?n:null}var qO={x:0,y:0,z:0};function JO(e,t,n){if(t.perch===void 0)return!1;let r=KO(e,t.perch);if(!r)return!0;r.translation(GO);let{perchAt:i}=t,a=z(GO.x-i.x-n.x,GO.y-i.y-n.y,GO.z-i.z-n.z)>=j_;return a||(i.x+=n.x,i.y+=n.y,i.z+=n.z),a}function YO(e,t){if(!t.grounded)return null;if(t.floor===void 0)return t.floorRead=!1,null;let n=KO(e,t.floor);return n||(t.floorRead=!1),n}var XO={x:0,y:0,z:0},Z={x:0,y:0,z:0};function ZO(e,t,n){let r=t?.parent();if(!t||!r?.isKinematic())return null;let i=r.userData;if(qT(t)){if(i!==void 0&&A(i)){let e=i.get(Sn);return e?(Z.x=e.x*n,Z.y=0,Z.z=e.z*n,r):null}let t=i===void 0?void 0:e.get(i);return!t||t.movedPass!==QC()?null:(Z.x=t.moved.x,Z.y=t.moved.y,Z.z=t.moved.z,r)}let a=i!==void 0&&A(i)?i.get(I(al)):void 0;return a?(Z.x=a.linear.x*n,Z.y=a.linear.y*n,Z.z=a.linear.z*n,r):(r.translation(XO),r.nextTranslation(Z),Z.x-=XO.x,Z.y-=XO.y,Z.z-=XO.z,r)}function QO(e,t){e.has(wn)?e.set(wn,t):e.add(wn({drop:t.drop,previous:t.drop}))}var $O=y(ji,O,le(kl));function ek(e,t){let n=e.get(Gn)?.value??1;D(e,$O,([e,{position:r}],i)=>{if(!A(i))return;let a=i.get(Cn)?.position??r;ID.lerpVectors(a,r,n);let o=t.actors.get(i)??TO(t,i,ID),s=i.get(M)?.height??0;s>0&&cA(t,i,o,s,{force:!0}),o.rigidBody.setTranslation(wO(ID,o.body),!1),AD(t,null)})}function tk(e,t){let n=e.get(C_),r=e.get(Gn)?.value??1;D(e,$O,([e,{position:i}],a)=>{let o=t.actors.get(a);if(!o||!A(a))return;let s=e.height/2,c=a.get(Cn)?.position??i;LD.lerpVectors(c,i,r).y+=s;let l=nk(o,n?k_(n,LD,s):1/0);if(RD.drop=0,l>0){wO(i,e);let n=a.get(M)?.isGrounded??zO(t.world,o),r=WO(t.world,o,n),{blendSteps:s}=pt;RD.drop=l===s?r:r*l/s}QO(a,RD)})}function nk(e,t){let{band:n,blendSteps:r}=pt;if(!e.feet){let i=A_(!1,t,n);return e.feet={detailed:i,settledSteps:i?r:0},e.feet.settledSteps}let i=e.feet;return i.detailed=A_(i.detailed,t,n),i.settledSteps=_.clamp(i.settledSteps+(i.detailed?1:-1),0,r),i.settledSteps}function rk(e,t){e.placedSinceStep&&e.placedAlone!==t&&(e.placedSinceStep=!1,e.placedAlone=null,e.world.refreshQueries())}var ik;function ak(e,{deltaSeconds:t,pushes:n,gravity:r,jumpHeight:i}){let a=XD(e);return!a||a.terrains.size===0?null:(ik??={handle:a,gravity:r,deltaSeconds:t,pushes:n,jumpHeight:i},ik.handle=a,ik.gravity=r,ik.deltaSeconds=t,ik.pushes=n,ik.jumpHeight=i,ik)}function ok({handle:e,deltaSeconds:t,pushes:n},r){let{body:i,motion:a,collider:o}=r,s=o.collisionGroups();return BD??={world:e.world,collider:o,groups:s,body:i,climbCosine:r.climbCosine,motion:a,centre:X,desired:PD,deltaSeconds:t,pushes:n},BD.world=e.world,BD.deltaSeconds=t,BD.collider=o,BD.groups=s,BD.body=i,BD.climbCosine=r.climbCosine,BD.motion=a,BD.pushes=n,BD.passes=void 0,BD}function sk(e,t,n){let{motion:r}=t;return r.perch===void 0||Z.x===0&&Z.z===0?!1:(n.x-=X.x,n.z-=X.z,lD(ok(e,t),Z,r.perch)||(r.floorRead=!1),n.x+=X.x,n.z+=X.z,!0)}var ck=[],lk=[];function uk(e){ck.length=0,dk.length=0;for(let t of e.actors.values()){let{perch:e,floor:n}=t.motion;e!==void 0&&(e===n?dk.push(t):ck.push(t))}}var dk=[];function fk(e){lk.length=0;let{handle:t}=e.collider;for(let e of dk)e.motion.perch===t&&lk.push(e.collider.handle);return lk.length>0?lk:void 0}function pk(e){lk.length=0;let{handle:t}=e.collider;for(let n of ck)n.motion.perch===t&&n.motion.floor===e.motion.floor&&lk.push(n.collider.handle);return lk.length>0?lk:void 0}function mk(e,t){let n=t.get(O)?.position;if(!n)return;let{handle:r,deltaSeconds:i}=e,a=e.gravity,o=r.world,s=r.actors.get(t)??uO(r,t,n),{body:c,motion:l}=s,u=c.height/2;s.rigidBody.translation(X);let d=ZO(r.actors,YO(o,l),i),f=l.floor;JO(o,l,d?Z:qO)&&(l.floorRead=!1);let p=d!==null&&sk(e,s,n);if(d&&!p&&(n.x+=Z.x,n.z+=Z.z),ND.x=n.x,ND.z=n.z,!M_({motion:l,centre:X,target:ND,deltaSeconds:i,gravity:a,jumpHeight:e.jumpHeight},PD))return!d||!p&&Z.y===0?void 0:(X.y+=Z.y,n.y+=Z.y,s);let m=ok(e,s);d&&(Z.x!==0||Z.z!==0)&&ck.length>0?m.passes=pk(s):dk.length>0&&(m.passes=fk(s)),pD(m),d&&l.floor===f&&(X.y+=Z.y);let{grounded:h}=l;return h&&(l.fallSpeed=0),n.set(X.x,X.y-u-T.offset,X.z),RD.drop=WO(o,s,h),QO(t,RD),s}var hk=.05;function gk(e,{body:t}){let{offset:n}=T,r=t.radius+n,i=2*z(PD.x,PD.y,PD.z)+t.step+r,a=i+r+hk,o=i+t.height/2+n+hk,s=i+3*t.height/2+n+hk,{start:c,centre:l,low:u,high:d}=e;u.x=Math.min(c.x,l.x)-a,u.y=Math.min(c.y,l.y)-s,u.z=Math.min(c.z,l.z)-a,d.x=Math.max(c.x,l.x)+a,d.y=Math.max(c.y,l.y)+o,d.z=Math.max(c.z,l.z)+a}var _k={x:0,y:0,z:0},vk,yk=!1;function bk(){return yk=!0,!1}function xk(e,t,{low:n,high:r}){return _k.x=(n.x+r.x)/2,_k.y=(n.y+r.y)/2,_k.z=(n.z+r.z)/2,vk??=new(B()).Cuboid(0,0,0),vk.halfExtents.x=(r.x-n.x)/2,vk.halfExtents.y=(r.y-n.y)/2,vk.halfExtents.z=(r.z-n.z)/2,yk=!1,e.world.intersectionsWithShape(_k,iO,vk,bk,B().QueryFilterFlags.EXCLUDE_FIXED,void 0,t.collider),yk}function Sk(e,t,n,r,i){let{handle:a}=t;e.entity=n,e.handle=a,e.fixedChanges=a.fixedChanges,e.deltaSeconds=t.deltaSeconds,e.gravity=t.gravity,e.offset=T.offset,e.jumpHeight=t.jumpHeight;let{body:o}=r;e.radius=o.radius,e.height=o.height,e.step=o.step,e.floorSnapDistance=o.floorSnapDistance,e.climbCosine=r.climbCosine,e.groups=r.collider.collisionGroups(),r.rigidBody.translation(e.start),wT(e.target,i),ET(e.before,r.motion)}function Ck(e,t,n){let r=e.handle.actors.get(t),i=t.get(O)?.position;if(n.valid=!1,n.reused=!1,n.refused=!1,!r||!i)return mk(e,t);Sk(n,e,t,r,i),PD.x=0,PD.y=0,PD.z=0,xb.watching=!0,xb.met=!1;let a;try{a=mk(e,t)}finally{xb.watching=!1}return n.tied=xb.met,n.walked=a!==void 0,wT(n.centre,a?X:n.start),n.drop=a?RD.drop:0,wT(n.position,i),ET(n.after,r.motion),gk(n,r),n.clear=!xk(e.handle,r,n),n.valid=!0,a}var wk=CT(),Tk=CT();function Ek(e,t,n,r,i){return!bT.reuse||!i.valid||!i.clear?!1:(Sk(wk,e,t,n,r),OT(wk,i)&&!xk(e.handle,n,i))}function Dk(e,t,n,r){if(wT(n,r.position),ET(t.motion,r.after),r.walked)return wT(X,r.centre),RD.drop=r.drop,QO(e,RD),t}function Ok(e,t){let n=[];return e.walked!==t.walked&&n.push(`whether she walked`),TT(e.centre,t.centre)||n.push(`body centre`),Object.is(e.drop,t.drop)||n.push(`drawn feet`),TT(e.position,t.position)||n.push(`transform`),DT(e.after,t.after)||n.push(`motion record`),n.join(`, `)}function kk(e,t,n){kT(Tk,n);let r=Ck(e,t,n);return bT.checkedHits++,AT(Tk,n)?(n.reused=!0,r):(bT.checkDifferences++,cr(t,`Entity ${t.id()}'s sweep record for a replayed step differed from sweeping the step again, in its ${Ok(Tk,n)}: the record was dropped and the step swept. A value the sweep reads is missing from the record's comparison.`),r)}function Ak(e,t,n){let r=e.handle.actors.get(t),i=t.get(O)?.position;if(!r||!i||!Ek(e,t,r,i,n))return Ck(e,t,n);if(n.tied){let r=Ck(e,t,n);return n.refused=!0,r}return bT.check?kk(e,t,n):(n.reused=!0,Dk(t,r,i,n))}function jk(e,t,n){let r=e.get(N)?.handle,i=r?.actors.get(t),a=t.get(O)?.position;if(!r||!i||!a||!n.valid||n.entity!==t||n.handle!==r||n.fixedChanges!==r.fixedChanges||!Object.is(n.radius,i.body.radius)||!Object.is(n.height,i.body.height)||!TT(a,n.position))return!1;let o=t.get(M);return o&&(o.isGrounded!==n.after.grounded||!Object.is(o.verticalSpeed,n.after.fallSpeed))?!1:(i.rigidBody.setTranslation(n.centre,!1),r.world.propagateModifiedBodyPositionsToColliders(),ET(i.motion,n.after),AD(r,t),!0)}var Mk=y(w),Nk=new Set,Pk={x:0,y:0,z:0},Fk={x:0,y:0,z:0},Ik,Lk=[],Rk=[],zk=!1,Bk={mover:{centre:{x:0,y:0,z:0},radius:0,reach:0,groups:0},target:Fk,players:Lk},Vk={from:{x:0,y:0,z:0},direction:FD,maxDistance:0,collisionMask:{except:[ea.players,ea.npcs]},collisionLayer:ea.npcs,bodyTypes:[R.Fixed]},Hk=Vk.from;function Uk(e){if(!zk){zk=!0,Lk.length=0;for(let[t,n]of e.actors){if(!t.has(w))continue;let e=Rk[Lk.length]??={centre:{x:0,y:0,z:0},radius:0,reach:0,groups:0};n.collider.translation(e.centre),e.radius=n.body.radius,e.reach=n.body.height/2-n.body.radius,e.groups=n.collider.collisionGroups(),Lk.push(e)}}}function Wk({world:e,handle:t},n,r,i){let a=ZD(t,n)?.getHeightAt(i)??i.y;Hk.x=i.x,Hk.y=Math.max(a,Pk.y)+r.step,Hk.z=i.z,Vk.maxDistance=Hk.y-a;let o=tj(e,Vk);return!o||o.distance===0?a:Hk.y-o.distance}function Gk(e,t){let{handle:n,move:r}=e,i=t.get(O)?.position;if(!i)return!1;let a=n.actors.get(t)??uO(n,t,i),{body:o,motion:s}=a;if(a.rigidBody.translation(X),Pk.x=X.x,Pk.y=X.y-o.height/2-T.offset,Pk.z=X.z,Fk.x=i.x,Fk.y=Pk.y,Fk.z=i.z,a.polygon&&z(Fk.x-Pk.x,Fk.z-Pk.z)<1e-5)return!0;if(ua(o.collisionMask,ea.players)){Uk(n);let{mover:e}=Bk;e.centre.y=X.y,e.radius=o.radius,e.reach=o.height/2-o.radius,e.groups=a.collider.collisionGroups(),AC(Bk)}return r.polygon=a.polygon,a.polygon=MC(r),a.polygon?(i.x=Fk.x,i.z=Fk.z,i.y=Wk(e,t,o,i),wO(i,o),a.collider.setTranslation(X),a.rigidBody.setNextKinematicTranslation(X),s.grounded=!0,s.fallSpeed=0,s.floorRead=!1,s.floor=void 0,RD.drop=0,QO(t,RD),!0):!1}function Kk(e,t,n){let r=XD(e);if(!r||r.terrains.size===0||A(t))return!1;let i=KD(e);if(i!==r.navMesh){r.navMesh=i;for(let e of r.actors.values())e.polygon=0}if(!i)return!1;let a=Ik??={world:e,handle:r,move:{query:i.query,polygon:0,from:Pk,to:Fk}};a.world=e,a.handle=r,a.move.query=i.query;let o=t.get(O)?.position,s=t.get(Sn);if(!o)return!1;rk(r,t),s&&(o.x+=s.x*n,o.z+=s.z*n),r.actors.get(t)?.rigidBody.translation(Xk);let c=!r.actors.has(t),l=Gk(a,t);if(l){Nk.add(t),AD(r,t);let e=r.actors.get(t);e&&Qk(e,c?null:Xk)}else s&&(o.x-=s.x*n,o.z-=s.z*n);return l}function qk(e,t,n,r,i){let a=!t.isGrounded&&n.grounded;return t.isGrounded=n.grounded,t.airSeconds=n.grounded?0:t.airSeconds+r,t.verticalSpeed=n.fallSpeed,i?t.jumpsSinceGrounded++:n.grounded&&(t.jumpsSinceGrounded=0),t.floorNormal.set(n.floorNormal.x,n.floorNormal.y,n.floorNormal.z),t.standingOn=Jk(e,n),a}function Jk(e,t){if(!t.grounded||t.floor===void 0)return null;let n=KO(e.world,t.floor)?.parent()?.userData;return!n||!n.isAlive()||n.has(Rg)?null:n}function Yk(e,t){let{entity:n,record:r,takesRecord:i}=t;if(n.has(kl))return;let a=ak(e,t);if(!a)return;let{handle:o}=a;rk(o,n);let s=o.actors.get(n);s?.polygon&&(s.polygon=0,EO(o.world,s)),s?.rigidBody.translation(Xk);let c=r?i?Ak(a,n,r):Ck(a,n,r):mk(a,n);c&&(c.rigidBody.setTranslation(X,!1),o.world.propagateModifiedBodyPositionsToColliders(),AD(o,n));let l=o.actors.get(n);return l&&Qk(l,s?Xk:null),l}var Xk={x:0,y:0,z:0},Zk={x:0,y:0,z:0};function Qk(e,t){if(e.movedPass=QC(),!t){e.moved.x=0,e.moved.y=0,e.moved.z=0;return}e.rigidBody.translation(Zk),e.moved.x=Zk.x-t.x,e.moved.y=Zk.y-t.y,e.moved.z=Zk.z-t.z}function $k(e,t,n,r,i){let a=e.get(N)?.handle;return a?qk(a,t,n.motion,r,i):!1}function eA(e,t){let{motion:n}=t;n.grounded!==e.isGrounded&&(n.floorRead=!1),n.grounded=e.isGrounded,n.fallSpeed=e.verticalSpeed}function tA(e,t,n,r){e.body.step=t,e.body.floorSnapDistance=n;let i=gD({maxSlopeRadians:r});i!==e.climbCosine&&(e.climbCosine=i,e.motion.floorRead=!1)}function nA(e,t){return cO(e,t)}var rA=new Set,iA=new Map;function aA(e,t,n){n.push(t);let r=e.actors.get(t);if(!r)return;let i=r.collider.handle;rA.add(i);let a=iA.get(i);if(a){iA.delete(i);for(let t of a)aA(e,t,n)}}function oA(e,t,n){let r=e.get(N)?.handle;if(!r||t.length<2)return;let{actors:i}=r,a=!1;for(let e of t)i.get(e)?.motion.perch!==void 0&&(a=!0);if(a){rA.clear(),iA.clear(),n.length=0;for(let e of t){let t=i.get(e)?.motion.perch;if(t===void 0||rA.has(t))aA(r,e,n);else{let n=iA.get(t);n?n.push(e):iA.set(t,[e])}}for(let[e,t]of iA){iA.delete(e);for(let e of t)aA(r,e,n)}for(let e=0;e<n.length;e++)t[e]=n[e]}}function sA(e){let t=XD(e);if(!t)return;let n=QC();if(t.preparedPass===n||(t.preparedPass=n,Nk.clear(),zk=!1,t.terrains.size===0))return;let{actors:r}=t,i=t.world;r.forEach((e,t)=>{(!t.isAlive()||t.has(kl))&&(i.removeRigidBody(e.rigidBody),r.delete(t))}),ek(e,t),eO(e,t),Rd(t)&&AD(t,null),rk(t),tk(e,t),uk(t)}function cA(e,t,n,r,{force:i=!1}={}){let{body:a}=n,o=Math.max(r,2*a.radius);if(o===a.height)return o;if(n.rigidBody.translation(X),X.y+=(o-a.height)/2,o>a.height&&!i){let{Capsule:t,ShapeType:r}=B(),i=new t(o/2-a.radius,a.radius);if(e.world.intersectionWithShape(X,iO,i,JC(),n.collider.collisionGroups()&~(HT>>>16),n.collider,void 0,e=>e.shape.type!==r.HeightField))return a.height}return e.world.removeCollider(n.collider,!1),n.rigidBody.setTranslation(X,!1),a.height=o,n.collider=e.world.createCollider(HD(t,a),n.rigidBody),n.motion.floorRead=!1,AD(e,t),o}function lA(e,t){let n=U_(e),r=t.world.gravity;(n.x!==r.x||n.y!==r.y||n.z!==r.z)&&(t.world.gravity={x:n.x,y:n.y,z:n.z},t.world.bodies.forEach(e=>e.wakeUp()))}var uA={x:0,y:0,z:0},dA={height:0};function fA(e,t){let n=xt(e).destroyBelowHeight,{fallen:r}=t;if(n===null){r.clear();return}t.bodies.forEach((t,i)=>{if(!t.isDynamic()||A(i)||!i.isAlive())return;if(t.translation(uA).y>=n){r.delete(i);return}if(r.has(i)){r.delete(i),Rc(e,i);return}let a=ir(e,i);a&&(r.add(i),dA.height=uA.y,ei(a,Bi,dA,{entity:i}),cr(i,`Entity ${i} fell below the scene's destroyBelowHeight of ${n} m and is destroyed at the next physics step: put its body back above it when FellOutOfWorldEvent lands to keep it, or set destroyBelowHeight with definePhysics.`))})}function pA(e,t){sA(e);let n=XD(e);if(!n)return;Vd(e,n),eO(e,n),Rd(n)&&AD(n,null),X_(e,n),$y(e,n),lA(e,n),n.world.timestep=t,Od(n),Bn(e)||Gw(n,t),gA(n),Sf(n,t);let r=Ad(n);n.world.step(r,Dd(n)),Lf(e,n,r,t),Hd(n),rb(e,n),qd(n),Ud(e,n),Nd(n,t),fA(e,n),_A(e,n)}var mA={x:0,y:0,z:0},hA={x:0,y:0,z:0,w:1};function gA(e){e.slidBodies.forEach((t,n)=>{let r=e.bodies.get(n);t&&r&&n.isAlive()&&r.isKinematic()&&(r.translation(mA),r.rotation(hA),r.setTranslation(t.position,!1),r.setRotation(t.rotation,!1),r.setNextKinematicTranslation(mA),r.setNextKinematicRotation(hA),r.wakeUp())}),e.slidBodies.clear()}function _A(e,t){e.query(Mk).forEach(e=>{let n=t.actors.get(e);if(!n||A(e))return;n.rigidBody.translation(X);let r=!vO(t,n);r&&!e.has(Bp)?e.add(Bp):!r&&e.has(Bp)&&e.remove(Bp)})}var vA=[],yA=[],bA=0,xA=0,SA=-1;function CA(){let e=Yr();(e===-1||e!==SA)&&(SA=e,bA=0,xA=0)}function wA(){let e=vA[bA]??={entity:0,point:new l,normal:new l,witness:new l,distance:0,colliderIndex:0};return bA++,e}function TA(){let e=yA[xA]??=[];return xA++,e.length=0,e}function EA(e){return`tick`in e}function DA(e){if(!EA(e))return e.get(N)?.handle??null;let{world:t}=e,n=t.get(N)?.handle,r=XD(t);return r?(!n&&Kd(t,r)&&(AD(r,null),r.fixedChanges++),ld(t,r),r.placedSinceStep&&(r.placedSinceStep=!1,r.placedAlone=null,r.world.refreshQueries()),r):null}function OA(e){return EA(e)?e.world:e}var kA,AA=!1,jA=0,MA,NA=1,PA=2,FA=4;function IA(e){let t=e.parent()?.userData;return t!==void 0&&t.isAlive()?t:void 0}function LA(e){let t=IA(e);return t!==void 0&&!kA?.includes(t)}function RA(e){if(!AA&&e.isSensor())return!1;let t=e.collisionGroups(),n=zA.groups;if(!(t>>>16&n&65535)||!(t&n>>>16&65535))return!1;let r=e.parent();if(!r||r===MA)return!1;let i=r.isFixed()?NA:r.isKinematic()?PA:FA;return(jA&i)!==0&&LA(e)}var zA={groups:0,flags:0,predicate:void 0};function BA(e,t){zA.groups=((t.collisionLayer?1<<sa(e,t.collisionLayer):65535)<<16|ca(e,t.collisionMask))>>>0,kA=t.ignore,AA=t.includeTriggers??!1,zA.predicate=t.ignore?.length?LA:void 0;let{QueryFilterFlags:n}=B(),r=t.includeTriggers?0:n.EXCLUDE_SENSORS,i=t.bodyTypes;return jA=i?(i.includes(R.Fixed)?NA:0)|(i.includes(R.Kinematic)?PA:0)|(i.includes(R.Dynamic)?FA:0):7,i&&(i.includes(R.Fixed)||(r|=n.EXCLUDE_FIXED),i.includes(R.Kinematic)||(r|=n.EXCLUDE_KINEMATIC),i.includes(R.Dynamic)||(r|=n.EXCLUDE_DYNAMIC)),zA.flags=r,zA}var VA=new WeakMap;function HA(e,t,n){let r=Pt(),i=`${t}${r?` in the system ${r}`:``} ${n}`;if(e.has(j))throw S(Error(i),`SP0545`,void 0);let a=VA.get(e);a||VA.set(e,a=new Set),!a.has(i)&&(a.add(i),console.error(i))}var UA=new l,WA=new l,GA;function KA(e,t,n){let{from:r,direction:i,maxDistance:a=1/0}=n;UA.set(r.x,r.y,r.z),WA.set(i.x,i.y,i.z);let o=WA.length();return!(o>0)||!Number.isFinite(o)?(HA(e,t,`was handed the direction [${i.x}, ${i.y}, ${i.z}], which points nowhere: give a direction of any length but zero, such as the difference between two points that differ.`),!1):a>=0?(WA.divideScalar(o),!0):(HA(e,t,`was handed a maxDistance of ${a}: give the metres it reaches, 0 or more, or leave it out to reach without end.`),!1)}function qA(){return GA||=new(B()).Ray(UA,WA),GA.origin=UA,GA.dir=WA,GA}function JA(e,t){return e.distance===t.distance?e.entity===t.entity?e.colliderIndex<t.colliderIndex:e.entity.id()<t.entity.id():e.distance<t.distance}function YA(e,t,n,r,i){e.entity=t,e.distance=r,e.colliderIndex=ud(n),e.point.copy(UA).addScaledVector(WA,r),e.normal.set(i.x,i.y,i.z)}var XA,ZA,QA;function $A(e){let t=IA(e.collider);if(t===void 0)return!0;if(XA){let n=wA();YA(n,t,e.collider,e.timeOfImpact,e.normal);let r=XA.length;for(XA.push(n);r>0&&JA(n,XA[r-1]);)XA[r]=XA[r-1],r--;return XA[r]=n,!0}let n=QA??={entity:0,point:new l,normal:new l,witness:new l,distance:0,colliderIndex:0};return YA(n,t,e.collider,e.timeOfImpact,e.normal),(!ZA||JA(n,ZA))&&(QA=ZA,ZA=n),!0}function ej(e,t,n,r){let i=OA(t);if(!KA(i,e,n))return!1;let a=DA(t);if(!a)return!1;let o=BA(i,n);XA=r,ZA=void 0;try{a.world.intersectionsWithRay(qA(),n.maxDistance??1/0,!0,$A,o.flags,o.groups,void 0,void 0,o.predicate)}finally{XA=void 0,kA=void 0}return!0}function tj(e,t){if(CA(),!ej(`castRay`,e,t,void 0)||!ZA)return null;let n=wA(),r=ZA;return n.entity=r.entity,n.distance=r.distance,n.colliderIndex=r.colliderIndex,n.point.copy(r.point),n.normal.copy(r.normal),ZA=void 0,n}function nj(e,t){CA();let n=TA();return ej(`castRayAll`,e,t,n),n}var rj=new WeakMap;function ij(e,t,n){let r=rj.get(n);if(r)return r;let i=B();switch(n.type){case L.Box:r=new i.Cuboid(n.size[0]/2,n.size[1]/2,n.size[2]/2);break;case L.Sphere:r=new i.Ball(n.radius);break;case L.Capsule:r=new i.Capsule(n.height/2-n.radius,n.radius);break;case L.Cylinder:r=new i.Cylinder(n.height/2,n.radius);break;case L.Cone:r=new i.Cone(n.height/2,n.radius);break;case L.ConvexHull:{let a=yu(Float32Array.from(n.points)),o=a&&i.ColliderDesc.convexHull(a);if(!o)return HA(e,t,`was handed a convexHull whose points wrap no body: they lie on one line or at one spot, or one is not a finite number. Give points that span a face, or a box.`),null;r=o.shape;break}}return rj.set(n,r),r}var aj={x:0,y:0,z:0,w:1},oj=new f,sj=new l;function cj(e,t){CA();let n=OA(e);if(!KA(n,`castShape`,t))return null;let r=DA(e);if(!r)return null;let i=ij(n,`castShape`,t.shape);if(!i)return null;let a=t.rotation??aj,o=BA(n,t),s;try{s=r.world.castShape(UA,a,WA,i,0,t.maxDistance??1/0,!1,o.flags,o.groups,void 0,void 0,o.predicate)}finally{kA=void 0}if(!s)return null;let c=IA(s.collider);if(c===void 0)return null;let l=wA();return l.entity=c,l.distance=s.time_of_impact,l.colliderIndex=ud(s.collider),l.point.set(s.witness1.x,s.witness1.y,s.witness1.z),l.normal.set(s.normal1.x,s.normal1.y,s.normal1.z),oj.set(a.x,a.y,a.z,a.w),sj.copy(UA).addScaledVector(WA,s.time_of_impact),l.witness.set(s.witness2.x,s.witness2.y,s.witness2.z).applyQuaternion(oj).add(sj),l}var lj,uj,dj={x:0,y:0,z:0},fj={x:0,y:0,z:0,w:1},pj,mj=!1;function hj(e,t){let n=IA(t);if(n===void 0)return;let r=ud(t);for(let t of e)if(t.entity===n){r<t.colliderIndex&&(t.colliderIndex=r);return}let i=wA();i.entity=n,i.colliderIndex=r,i.distance=0;let a=n.id(),o=e.length;for(e.push(i);o>0&&e[o-1].entity.id()>a;)e[o]=e[o-1],o--;e[o]=i}function gj(e){return RA(e)?pj?(mj=pj.contactCollider(e,xj)!==null,!mj):(lj&&uj&&e.contactShape(uj,dj,fj,0)!==null&&hj(lj,e),!0):!0}var _j={x:0,y:0,z:0};function vj(e,t,n){_j.x=n,_j.y=n,_j.z=n,e.world.collidersWithAabbIntersectingAabb(t,_j,gj)}function yj(e){switch(e.type){case L.Box:return z(e.size[0],e.size[1],e.size[2])/2;case L.Sphere:return e.radius;case L.Capsule:return e.height/2;case L.Cylinder:case L.Cone:return z(e.height/2,e.radius,0);case L.ConvexHull:{let t=0,{points:n}=e;for(let e=0;e+2<n.length;e+=3)t=Math.max(t,z(n[e],n[e+1],n[e+2]));return t}}}function bj(e,t){CA();let n=TA(),r=OA(e),i=DA(e);if(!i)return n;let a=ij(r,`overlapShape`,t.shape);if(!a)return n;BA(r,t);let{position:o}=t,s=t.rotation??aj;dj.x=o.x,dj.y=o.y,dj.z=o.z,fj.x=s.x,fj.y=s.y,fj.z=s.z,fj.w=s.w,uj=a,lj=n;try{vj(i,dj,yj(t.shape))}finally{lj=void 0,uj=void 0,kA=void 0}return n}var xj=T.offset*2;function Sj(e){let t=B(),{shape:n}=e;if(n instanceof t.Ball)return n.radius;if(n instanceof t.Capsule)return n.halfHeight+n.radius;if(n instanceof t.Cuboid){let{x:e,y:t,z:r}=n.halfExtents;return z(e,t,r)}if(n instanceof t.Cylinder||n instanceof t.Cone)return z(n.halfHeight,n.radius,0);if(n instanceof t.ConvexPolyhedron){let e=0,{vertices:t}=n;for(let n=0;n+2<t.length;n+=3)e=Math.max(e,z(t[n],t[n+1],t[n+2]));return e}return 1e6}function Cj(e,t){return e.bodies.get(t)??e.terrains.get(t)?.body??e.actors.get(t)?.rigidBody}function wj(e){return e.has(I(il))||e.has(Rg)||e.has(O)&&e.has(Sn)}var Tj={x:0,y:0,z:0};function Ej(e,t,n={}){let r=OA(e);if(!t.isAlive()||!wj(t))return HA(r,`isTouching`,`was handed entity ${t.id()}, which ${t.isAlive()?`has no body and walks no capsule`:`has been destroyed`}: give it a collider, or ask about an entity that has one.`),!1;let i=DA(e),a=i&&Cj(i,t);if(!i||!a)return!1;let{other:o}=n;if(o!==void 0){let e=o.isAlive()&&Cj(i,o);if(!e)return!1;for(let t=0;t<a.numColliders();t++)for(let n=0;n<e.numColliders();n++)if(a.collider(t).contactCollider(e.collider(n),xj))return!0;return!1}BA(r,n),MA=a,mj=!1;try{for(let e=0;e<a.numColliders()&&!mj;e++)pj=a.collider(e),vj(i,pj.translation(Tj),Sj(pj)+xj)}finally{pj=void 0,MA=void 0,kA=void 0}return mj}var Dj=C(`lethalSource`,()=>({source:null}),{local:!0,entities:[`source`]}),Oj=C(`dying`),kj=C(`hitZones`,()=>[]),Aj=new h,jj=new l,Mj=new l,Nj=new l,Pj=new f,Fj={zone:null,distance:1/0};function Ij(e,t,n,r,i){if(Fj.zone=null,Fj.distance=1/0,n.length===0)return Fj;Aj.origin.copy(e.origin).sub(r),Aj.direction.copy(e.direction),i&&(Pj.copy(i).invert(),Aj.origin.applyQuaternion(Pj),Aj.direction.applyQuaternion(Pj));for(let e of n){jj.copy(e.at),Mj.copy(e.to??e.at);let n=Aj.distanceSqToSegment(jj,Mj,Nj),r=e.radius**2;if(n>r)continue;let i=Math.max(Nj.distanceTo(Aj.origin)-Math.sqrt(r-n),0);i>t||i>=Fj.distance||(Fj.zone=e,Fj.distance=i)}return Fj}function Lj(e,t,n=1){return t?e*t.multiplier*n:e}var Rj=new l,zj=new l,Bj=new l;function Vj(e){let{ray:t,range:n,feet:r,zones:i}=e,a=Ij(t,1/0,i??[],r,e.facing),o=Math.min(Hj(e),a.distance<=n?a.distance:1/0);return e.zone=o===1/0?null:a.zone,o}function Hj({ray:e,range:t,feet:n,body:r}){let i=r.radius||Mi.radius,a=r.height||Mi.height,o=n.y+a/2,s=Math.max(a/2-i,0);Rj.copy(n).setY(o-s),zj.copy(n).setY(o+s);let c=e.distanceSqToSegment(Rj,zj,Bj);if(c>i**2)return 1/0;let l=Math.max(Bj.distanceTo(e.origin)-Math.sqrt(i**2-c),0);return l<=t?l:1/0}var Uj=Object.freeze({except:Object.freeze([ea.players,ea.npcs])}),Wj=[],Gj=Object.freeze([]),Kj={from:new l,direction:new l,maxDistance:0,collisionMask:Uj,ignore:Wj};function qj(e,t){let n=e.get(O)?.position;if(!n)return;let r=e.get(ji)?.height||Mi.height;return t.copy(n).setY(n.y+r/2)}function Jj(e,{ray:t,range:n,target:r,through:i=Gj}){Wj.length=0,r&&Wj.push(r);for(let e of i)Wj.push(e);return Kj.from=t.origin,Kj.direction=t.direction,Kj.maxDistance=n,tj(e,Kj)}function Yj(e,{shooter:t,friendlyFire:n=!1,passes:r}){return e===t||e.has(Oj)&&e.has(Fp)||r?.(e)?!0:!n&&!!t?.has(w)&&e.has(w)}var Xj={target:null,distance:1/0,zone:null},Zj=y(V,O),Qj=new f;function $j(e,t,n,r){let i=A(t),a=t.get(Cn);a&&i?e.feet.lerpVectors(a.position,n,r):e.feet.copy(n),e.body=t.get(ji)??Mi,e.zones=t.get(kj),e.facing=null;let o=e.zones?.length?t.get(O)?.rotation:null;if(!o)return;let s=i?a?.rotation:void 0;e.facing=s?Qj.slerpQuaternions(s,o,r):Qj.copy(o)}function eM(e,t,{hits:n,distances:r,zones:i}){let{test:a}=t,o=e.get(Gn)?.value??1,s=0;for(let c of e.query(Zj)){let e=c.get(O)?.position;if(!e||Yj(c,t)||(c.get(V)?.current??0)<=0)continue;$j(a,c,e,o);let l=Vj(a);if(l===1/0)continue;let u=a.zone??null,d=s;for(;d>0&&r[d-1]>l;)n[d]=n[d-1],r[d]=r[d-1],i[d]=i[d-1],d--;n[d]=c,r[d]=l,i[d]=u,s++}return s}function tM(e,t){let{test:n}=t;Xj.target=null,Xj.distance=1/0,Xj.zone=null;let r=e.get(Gn)?.value??1;for(let i of e.query(Zj)){let e=i.get(O)?.position;if(!e||Yj(i,t)||(i.get(V)?.current??0)<=0)continue;$j(n,i,e,r);let a=Vj(n);a>=Xj.distance||(Xj.target=i,Xj.distance=a,Xj.zone=n.zone??null)}return Xj}var nM=new l,rM={position:new l,rotation:new f};function iM(e,t){if(e.has(M))return;let n=e.get(Sn),r=e.get(O)?.position;if(!n||!r||n.lengthSq()===0)return;let i=E(e);if(!i)return;let a=jv(i,e,rM).position;a.addScaledVector(n,t),Mv(i,e,{position:a})}var aM=y(O,Sn);function oM(e,t){dn(e,aM,(e,n)=>{A(n)||iM(n,t)})}var sM=y(O,Cn),cM=y(wn);function lM(e){dn(e,sM,([e,t],n)=>{A(n)||yn(t,e)}),dn(e,cM,([e],t)=>{A(t)||(e.previous=e.drop)})}var uM=y(Wn);function dM(e,t){dn(e,uM,([e])=>{if(e.previous.copy(e.offset),e.seconds<=0)return;let n=Math.max(e.seconds-t,0);e.offset.multiplyScalar(n/e.seconds),e.seconds=n})}var fM=y(O,Cn,jn),pM=y(wn,jn),mM=y(Wn,jn);function hM(e,{fraction:t,streamed:n}){D(e,fM,([e,r,i],a)=>{if(A(a)!==n||!i.object)return;let o=i.object;o.position.lerpVectors(r.position,e.position,t),o.quaternion.slerpQuaternions(r.rotation,e.rotation,t),o.scale.lerpVectors(r.scale,e.scale,t)}),D(e,pM,([e,r],i)=>{A(i)===n&&r.object&&(r.object.position.y-=e.previous+(e.drop-e.previous)*t)})}function gM(e,t=1){hM(e,{fraction:t,streamed:!1}),Jl(e),D(e,mM,([e,n])=>{n.object?.position.add(nM.lerpVectors(e.previous,e.offset,t))})}function _M(e,t){hM(e,{fraction:t,streamed:!0}),Jl(e)}var vM=function(e){return e.Head=`head`,e.Body=`body`,e.Hands=`hands`,e.Feet=`feet`,e.Ring1=`ring1`,e.Ring2=`ring2`,e.Neck=`neck`,e.MainHand=`mainhand`,e.OffHand=`offhand`,e}({}),yM=function(e){return e.Heal=`heal`,e.Modify=`modify`,e.Coins=`coins`,e}({}),bM=C(`inventory`,()=>[],{ownerOnly:!0}),xM=C(`equipment`,()=>({}),{ownerOnly:!0}),SM=x(()=>[]),CM=yr(`itemAccepted`,{item:``}),wM=function(e){return e.Move=`move`,e.Use=`use`,e.Equip=`equip`,e.Unequip=`unequip`,e.Drop=`drop`,e}({}),TM=x(()=>[]),EM=new Map;function DM(e,t){let{maxStack:n}=t;if(n!==void 0&&!(Number.isInteger(n)&&n>=1))throw S(Error(`Cannot stack ${n} of "${e}" in a slot: not a whole count`),`SP0092`,`registerItem`);for(let n of t.use?.effects??[])if(!(n.type===yM.Modify||n.amount>=0&&Number.isFinite(n.amount)))throw S(Error(n.type===yM.Heal?`registerItem: "${e}" heals by ${n.amount}; a heal takes a finite number from 0.`:`registerItem: "${e}" pays ${n.amount} coins; a coin effect takes a finite number from 0.`),[[`SP0093`,`registerItem: "%s" heals by %s; a heal takes a finite number from 0.`],[`SP0094`,`registerItem: "%s" pays %s coins; a coin effect takes a finite number from 0.`]],`registerItem`);return Ne(EM,e,{...t})}function OM(){return[...EM.keys()]}function kM(e){return EM.get(e)}function AM(e){let t=EM.get(e);if(!t)throw S(Error(Rv({kind:`item`,name:e,names:EM.keys(),registrationInstructions:`register it with registerItem(name, definition)`})),[[`SP0031`,`No %s named "%s" is registered, and none is yet: %s.`],[`SP0501`,`No %s named "%s" is registered: %s, or name one of %s%s.`]],void 0);return t}function jM(e,t){if(!e.has(In))return!1;if(A(e))return cr(e,`Did not ${t.action} an item for another player's character: a room changes a bag only on its owner's word. Run item verbs on the local player's character.`),!0;let n=e.get(TM);return n?e.set(TM,[...n,t]):e.add(TM([t])),!0}var MM=new l;function NM(e,{holder:t,slot:n,count:r}){if(FM(r),jM(t,{action:wM.Drop,slot:n,count:r}))return;let i=BM(t),a=i[n],o=t.get(O)?.position;if(!a||r>a.count||!o)return;let{model:s}=AM(a.item);i[n]=RM(a,r),t.set(bM,i),MM.set(0,0,-1.5);let c=t.get(O)?.rotation;c&&MM.applyQuaternion(c);let l=vy(rr(e),{position:MM.add(o),traits:[Jf({item:a.item,count:r,data:a.data})]});return s&&l.add(On({name:s})),l}function PM(e){return Number.isInteger(e)&&Number(e)>0}function FM(e){if(!PM(e))throw S(Error(`Cannot move ${e} of an item: the count must be a whole number above 0, such as 1.`),`SP0095`,void 0)}function IM(e){return AM(e).maxStack??1}function LM(e,t){return e.item===t.item&&_a(e.data,t.data)}function RM(e,t){return t===e.count?null:{...e,count:e.count-t}}var zM=[];function BM(e){return[...e.get(bM)??zM]}function VM(e,t){return Number.isInteger(t)&&t>=0&&t<e.length}function HM(e,t){let n=e.get(bM)??[],r=Array.from({length:t},(e,t)=>n[t]??null);e.has(bM)?e.set(bM,r):e.add(bM(r))}function UM(e,t){FM(t.count);let n=IM(t.item),r=e.get(bM)??zM,i,a=t.count;for(let e=0;e<r.length&&a>0;e++){let o=r[e];if(!o||!LM(o,t)||o.count>=n)continue;let s=Math.min(n-o.count,a);i??=[...r],i[e]={...o,count:o.count+s},a-=s}for(let e=0;e<r.length&&a>0;e++){if(r[e])continue;let o=Math.min(n,a);i??=[...r],i[e]={...t,count:o},a-=o}return i&&e.set(bM,i),t.count-a}function WM(e,{item:t,count:n}){FM(n);let r=BM(e),i=n;for(let e=0;e<r.length&&i>0;e++){let n=r[e];if(n?.item!==t)continue;let a=Math.min(n.count,i);r[e]=RM(n,a),i-=a}return i<n&&e.set(bM,r),n-i}function GM(e,{from:t,to:n}){if(jM(e,{action:wM.Move,from:t,to:n}))return;let r=BM(e),i=r[t];if(!VM(r,t)||!VM(r,n)||t===n||!i)return;let a=r[n];if(a&&LM(a,i)){let e=Math.min(IM(i.item)-a.count,i.count);if(e<=0)return;r[n]={...a,count:a.count+e},r[t]=RM(i,e)}else r[n]=i,r[t]=a;e.set(bM,r)}function KM(e,{from:t,to:n,count:r}){if(FM(r),jM(e,{action:wM.Move,from:t,to:n,count:r}))return;let i=BM(e),a=i[t];VM(i,t)&&VM(i,n)&&!i[n]&&a&&(r>a.count||(i[n]={...a,count:r},i[t]=RM(a,r),e.set(bM,i)))}function qM(e,t){let n=0;for(let r of e.get(bM)??[])r?.item===t&&(n+=r.count);return n}function JM(e,t){return qM(e,t)>0}function YM(e){return kM(e)?.displayName??e}function XM({item:e,count:t}){return t>1?`${YM(e)} ×${t}`:YM(e)}function ZM(e){let t=new Set;for(let n of e){if(!n)continue;let e=kM(n.item),r=YM(n.item);(e?.use||e?.tags?.length)&&t.add(`use ${r}`),e?.equip&&t.add(`wear ${r}`)}return[...t]}function QM(e){return Object.values(e).flatMap(e=>e?[`wearing ${YM(e.item)}`]:[])}var $M={plugin:`inventory`,trait:bM,wiki:`/engine/behaviours/inventory/`,description:`A bag of slots that holds stacks of items.`,ai:e=>({facts:e.flatMap(e=>e?[`carrying ${XM(e)}`]:[]),actions:ZM(e)}),runsOn:k.Server},eN={plugin:`inventory`,trait:xM,wiki:`/engine/behaviours/inventory/#equipment`,description:`Slots an entity wears items in, which change its stats.`,ai:e=>({facts:QM(e)}),runsOn:k.Server},tN={plugin:`inventory`,trait:Jf,wiki:`/engine/behaviours/loot/`,description:`Puts a stack of an item into the bag of the character who reaches it.`,ai:e=>({is:XM(e),actions:[`take it`]}),ranges:{count:{min:1,max:99,step:1},radius:{min:0,max:5,step:.1}},runsOn:k.Server},nN={name:``,fadeSeconds:.15,hold:!1,start:0,end:0,speed:1,plays:0},rN=C(`oneShotClip`,{...nN}),iN=C(`upperBodyClip`,{...nN}),aN=yr(`clipMark`,{clip:``,mark:``,seconds:0,plays:0},{delivery:hr.Local}),oN=function(e){return e.Whole=`whole`,e.UpperBody=`upperBody`,e}({}),sN={whole:rN,upperBody:iN};function cN(e,t,{fadeSeconds:n=.15,hold:r=!1,layer:i=`whole`,start:a=0,end:o,speed:s=1}={}){if(!t)throw S(Error(`playClip: the clip has no name; pass the name of a clip the avatar or the model has`),`SP0072`,`playClip`,e);if(!(n>=0&&Number.isFinite(n)))throw S(Error(`playClip: fadeSeconds is ${n}; pass 0 or more seconds`),`SP0073`,`playClip`,e);if(!(a>=0&&Number.isFinite(a)))throw S(Error(`playClip: start is ${a}; pass 0 or more seconds into the clip`),`SP0074`,`playClip`,e);if(o!==void 0&&!(o>a&&Number.isFinite(o)))throw S(Error(`playClip: end is ${o}, not after start ${a}; pass an end later than start, or leave it out to play to the clip's end`),`SP0075`,`playClip`,e);if(!(s>0&&Number.isFinite(s)))throw S(Error(`playClip: speed is ${s}; pass a play rate above 0, such as 1 for the clip's own pace`),`SP0076`,`playClip`,e);let c=sN[i],l=(e.get(c)?.plays??0)+1,u={name:t,fadeSeconds:n,hold:r,start:a,end:o??0,speed:s,plays:l};e.has(c)?e.set(c,u):e.add(c(u))}function lN(e,{layer:t=`whole`}={}){let n=sN[t];e.has(n)&&e.set(n,{name:``})}var uN=function(e){return e.Spawn=`spawn`,e.Fallen=`fallen`,e}({}),dN={plugin:`behaviours`,trait:Ip,wiki:`/engine/behaviours/health/#when-anything-else-runs-out-of-health`,description:`Downs its entity at zero health in place of removing it, and stands it again at full health after a wait.`,ranges:{seconds:{min:0,max:120,step:1}},runsOn:k.Server};function fN(e,t){if(!Number.isFinite(e)||e<0)throw S(Error(`A respawn waits a number of seconds from 0, not ${e}: ${t}`),`SP0502`,void 0)}function pN(e){e!==!1&&fN(e.seconds??5,`set respawn={{ seconds: 5 }}, or respawn={false} to keep her down.`)}function mN(e,{respawn:t,spawn:n}){if(pN(t),t===!1){e.remove(Ip,Lp);return}let{seconds:r=5,at:i=`spawn`}=t,a=typeof i==`string`?n.clone():new l(...i),o={seconds:r,inPlace:i===`fallen`,point:a};e.has(Ip)?e.set(Ip,o):e.add(Ip(o))}var hN=y(Fp,Ip,le(Lp)),gN=y(Lp),_N=y(Lp,le(Fp)),vN=y(Lp,Ip,V);function yN(e,t){let n=t.get(Ip),r=t.get(V);n&&r&&(t.set(V,{current:r.maximum}),t.remove(Fp,Lp),lN(t),!n.inPlace&&(t.get(O)?.position.copy(n.point),t.get(Sn)?.set(0,0,0),$D(e,t)))}function bN(e,t){D(e,_N,(e,t)=>{t.remove(Lp);let n=t.get(Ip)?.clip;n&&t.get(rN)?.name===n&&lN(t)}),D(e,hN,([e],t)=>{t.add(Lp({seconds:e.seconds,secondsLeft:e.seconds})),e.clip&&cN(t,e.clip,{hold:!0})}),dn(e,gN,([e])=>{e.secondsLeft=Math.max(0,e.secondsLeft-t)}),D(e,vN,([n],r)=>{n.secondsLeft<t/2&&yN(e,r)})}var xN=x(()=>({checks:null,snapshot:null,updates:[]}));function SN(e,t,n){let r=e.get(xN);if(r?.checks)return r.checks.noteWelcome(n);if(r){r.snapshot=n,r.updates.length=0;return}(typeof __GAME_ENGINE_DEV__!=`boolean`||__GAME_ENGINE_DEV__)&&(e.add(xN({checks:null,snapshot:n,updates:[]})),we(async()=>{let{installPredictionChecks:e}=await import(`./DkVVho_1.js`);return{installPredictionChecks:e}},__vite__mapDeps([9,3,10,11,12,1,13,14,15,16,17,18,19,20,21,22]),import.meta.url).then(({installPredictionChecks:n})=>n(e,t)))}function CN(e,t){let n=e.get(xN);n&&(n.checks?n.checks.noteUpdate(t):n.updates.push(t))}var wN=new WeakMap,TN=null,EN;function DN(){return typeof __GAME_ENGINE_DEV__==`boolean`&&!__GAME_ENGINE_DEV__?Promise.resolve():(EN??=we(()=>import(`./DkVVho_1.js`).then(e=>{TN=e.createWorldChecks}),__vite__mapDeps([9,3,10,11,12,1,13,14,15,16,17,18,19,20,21,22]),import.meta.url),EN)}function ON(e){return wN.get(e)??null}function kN(e,t){let n=E(e),r=n?ON(n):null;r?.openCharacterDoor?.(e);try{return t()}finally{r?.closeCharacterDoor?.(e)}}function AN(e){let t=wN.get(e);return t||(TN?(t=TN(e),wN.set(e,t),t):(DN(),null))}function jN(){if(typeof globalThis<`u`)return globalThis;if(typeof self<`u`)return self;if(typeof window<`u`)return window;if(typeof global<`u`)return global}function MN(){let e=jN();if(e.__xstate__)return e.__xstate__}var NN=e=>{if(typeof window>`u`)return;let t=MN();t&&t.register(e)},PN=class{constructor(e){this._process=e,this._active=!1,this._current=null,this._last=null}start(){this._active=!0,this.flush()}clear(){this._current&&(this._current.next=null,this._last=this._current)}enqueue(e){let t={value:e,next:null};if(this._current){this._last.next=t,this._last=t;return}this._current=t,this._last=t,this._active&&this.flush()}flush(){for(;this._current;){let e=this._current;this._process(e.value),this._current=e.next}this._last=null}},FN=``,IN=`#`,LN=`*`,RN=`xstate.init`,zN=`xstate.stop`;function BN(e,t){return{type:`xstate.after.${e}.${t}`}}function VN(e,t){return{type:`xstate.done.state.${e}`,output:t}}function HN(e,t){return{type:`xstate.done.actor.${e}`,output:t,actorId:e}}function UN(e,t){return{type:`xstate.error.actor.${e}`,error:t,actorId:e}}function WN(e){return{type:RN,input:e}}function GN(e){setTimeout(()=>{throw e})}var KN=typeof Symbol==`function`&&Symbol.observable||`@@observable`;function qN(e,t){let n=YN(e),r=YN(t);return typeof r==`string`?typeof n==`string`&&r===n:typeof n==`string`?n in r:Object.keys(n).every(e=>e in r&&qN(n[e],r[e]))}function JN(e){if(tP(e))return e;let t=[],n=``;for(let r=0;r<e.length;r++){switch(e.charCodeAt(r)){case 92:n+=e[r+1],r++;continue;case 46:t.push(n),n=``;continue}n+=e[r]}return t.push(n),t}function YN(e){return jF(e)?e.value:typeof e==`string`?XN(JN(e)):e}function XN(e){if(e.length===1)return e[0];let t={},n=t;for(let t=0;t<e.length-1;t++)if(t===e.length-2)n[e[t]]=e[t+1];else{let r=n;n={},r[e[t]]=n}return t}function ZN(e,t){let n={},r=Object.keys(e);for(let i=0;i<r.length;i++){let a=r[i];n[a]=t(e[a],a,e,i)}return n}function QN(e){return tP(e)?e:[e]}function $N(e){return e===void 0?[]:QN(e)}function eP(e,t,n,r){return typeof e==`function`?e({context:t,event:n,self:r}):e}function tP(e){return Array.isArray(e)}function nP(e){return e.type.startsWith(`xstate.error.actor`)}function rP(e){return QN(e).map(e=>e===void 0||typeof e==`string`?{target:e}:e)}function iP(e){if(e!==void 0&&e!==FN)return $N(e)}function aP(e,t,n){let r=typeof e==`object`,i=r?e:void 0;return{next:(r?e.next:e)?.bind(i),error:(r?e.error:t)?.bind(i),complete:(r?e.complete:n)?.bind(i)}}function oP(e,t){return`${t}.${e}`}function sP(e,t){let n=t.match(/^xstate\.invoke\.(\d+)\.(.*)/);if(!n)return e.implementations.actors[t];let[,r,i]=n,a=e.getStateNodeById(i).config.invoke;return(Array.isArray(a)?a[r]:a).src}function cP(e,t){if(t===e||t===LN)return!0;if(!t.endsWith(`.*`))return!1;let n=t.split(`.`),r=e.split(`.`);for(let e=0;e<n.length;e++){let t=n[e],i=r[e];if(t===`*`)return e===n.length-1;if(t!==i)return!1}return!0}function lP(e,t){return`${e.sessionId}.${t}`}var uP=0;function dP(e,t){let n=new Map,r=new Map,i=new WeakMap,a=new Set,o={},{clock:s,logger:c}=t,l={schedule:(e,t,n,r,i=Math.random().toString(36).slice(2))=>{let a={source:e,target:t,event:n,delay:r,id:i,startedAt:Date.now()},c=lP(e,i);u._snapshot._scheduledEvents[c]=a;let l=s.setTimeout(()=>{delete o[c],delete u._snapshot._scheduledEvents[c],u._relay(e,t,n)},r);o[c]=l},cancel:(e,t)=>{let n=lP(e,t),r=o[n];delete o[n],delete u._snapshot._scheduledEvents[n],r!==void 0&&s.clearTimeout(r)},cancelAll:e=>{for(let t in u._snapshot._scheduledEvents){let n=u._snapshot._scheduledEvents[t];n.source===e&&l.cancel(e,n.id)}}},u={_snapshot:{_scheduledEvents:(t?.snapshot&&t.snapshot.scheduler)??{}},_bookId:()=>`x:${uP++}`,_register:(e,t)=>(n.set(e,t),e),_unregister:e=>{n.delete(e.sessionId);let t=i.get(e);t!==void 0&&(r.delete(t),i.delete(e))},get:e=>r.get(e),getAll:()=>Object.fromEntries(r.entries()),_set:(e,t)=>{let n=r.get(e);if(n&&n!==t)throw Error(`Actor with system ID '${e}' already exists.`);r.set(e,t),i.set(t,e)},inspect:e=>{let t=aP(e);return a.add(t),{unsubscribe(){a.delete(t)}}},_sendInspectionEvent:t=>{if(!a.size)return;let n={...t,rootId:e.sessionId};a.forEach(e=>e.next?.(n))},_relay:(e,t,n)=>{u._sendInspectionEvent({type:`@xstate.event`,sourceRef:e,actorRef:t,event:n}),t._send(n)},scheduler:l,getSnapshot:()=>({_scheduledEvents:{...u._snapshot._scheduledEvents}}),start:()=>{let e=u._snapshot._scheduledEvents;u._snapshot._scheduledEvents={};for(let t in e){let{source:n,target:r,event:i,delay:a,id:o}=e[t];l.schedule(n,r,i,a,o)}},_clock:s,_logger:c};return u}var fP=!1,pP=function(e){return e[e.NotStarted=0]=`NotStarted`,e[e.Running=1]=`Running`,e[e.Stopped=2]=`Stopped`,e}({}),mP={clock:{setTimeout:(e,t)=>setTimeout(e,t),clearTimeout:e=>clearTimeout(e)},logger:console.log.bind(console),devTools:!1},hP=class{constructor(e,t){this.logic=e,this._snapshot=void 0,this.clock=void 0,this.options=void 0,this.id=void 0,this.mailbox=new PN(this._process.bind(this)),this.observers=new Set,this.eventListeners=new Map,this.logger=void 0,this._processingStatus=pP.NotStarted,this._parent=void 0,this._syncSnapshot=void 0,this.ref=void 0,this._actorScope=void 0,this.systemId=void 0,this.sessionId=void 0,this.system=void 0,this._doneEvent=void 0,this.src=void 0,this._deferred=[];let n={...mP,...t},{clock:r,logger:i,parent:a,syncSnapshot:o,id:s,systemId:c,inspect:l}=n;this.system=a?a.system:dP(this,{clock:r,logger:i}),l&&!a&&this.system.inspect(aP(l)),this.sessionId=this.system._bookId(),this.id=s??this.sessionId,this.logger=t?.logger??this.system._logger,this.clock=t?.clock??this.system._clock,this._parent=a,this._syncSnapshot=o,this.options=n,this.src=n.src??e,this.ref=this,this._actorScope={self:this,id:this.id,sessionId:this.sessionId,logger:this.logger,defer:e=>{this._deferred.push(e)},system:this.system,stopChild:e=>{if(e._parent!==this)throw Error(`Cannot stop child actor ${e.id} of ${this.id} because it is not a child`);e._stop()},emit:e=>{let t=this.eventListeners.get(e.type),n=this.eventListeners.get(`*`);if(!t&&!n)return;let r=[...t?t.values():[],...n?n.values():[]];for(let t of r)try{t(e)}catch(e){GN(e)}},actionExecutor:e=>{let t=()=>{if(this._actorScope.system._sendInspectionEvent({type:`@xstate.action`,actorRef:this,action:{type:e.type,params:e.params}}),!e.exec)return;let t=fP;try{fP=!0,e.exec(e.info,e.params)}finally{fP=t}};this._processingStatus===pP.Running?t():this._deferred.push(t)}},this.send=this.send.bind(this),this.system._sendInspectionEvent({type:`@xstate.actor`,actorRef:this}),c&&(this.systemId=c,this.system._set(c,this)),this._initState(t?.snapshot??t?.state),c&&this._snapshot.status!==`active`&&this.system._unregister(this)}_initState(e){try{this._snapshot=e?this.logic.restoreSnapshot?this.logic.restoreSnapshot(e,this._actorScope):e:this.logic.getInitialSnapshot(this._actorScope,this.options?.input)}catch(e){this._snapshot={status:`error`,output:void 0,error:e}}}update(e,t){this._snapshot=e;let n;for(;n=this._deferred.shift();)try{n()}catch(t){this._deferred.length=0,this._snapshot={...e,status:`error`,error:t}}switch(this._snapshot.status){case`active`:for(let t of this.observers)try{t.next?.(e)}catch(e){GN(e)}break;case`done`:for(let t of this.observers)try{t.next?.(e)}catch(e){GN(e)}this._stopProcedure(),this._complete(),this._doneEvent=HN(this.id,this._snapshot.output),this._parent&&this.system._relay(this,this._parent,this._doneEvent);break;case`error`:this._error(this._snapshot.error)}this.system._sendInspectionEvent({type:`@xstate.snapshot`,actorRef:this,event:t,snapshot:e})}subscribe(e,t,n){let r=aP(e,t,n);if(this._processingStatus!==pP.Stopped)this.observers.add(r);else switch(this._snapshot.status){case`done`:try{r.complete?.()}catch(e){GN(e)}break;case`error`:{let e=this._snapshot.error;if(!r.error)GN(e);else try{r.error(e)}catch(e){GN(e)}break}}return{unsubscribe:()=>{this.observers.delete(r)}}}on(e,t){let n=this.eventListeners.get(e);n||(n=new Set,this.eventListeners.set(e,n));let r=t.bind(void 0);return n.add(r),{unsubscribe:()=>{n.delete(r)}}}select(e,t=Object.is){return{subscribe:n=>{let r=aP(n),i=e(this.getSnapshot());return this.subscribe(n=>{let a=e(n);t(i,a)||(i=a,r.next?.(a))})},get:()=>e(this.getSnapshot())}}start(){if(this._processingStatus===pP.Running)return this;this._syncSnapshot&&this.subscribe({next:e=>{e.status===`active`&&this.system._relay(this,this._parent,{type:`xstate.snapshot.${this.id}`,snapshot:e})},error:()=>{}}),this.system._register(this.sessionId,this),this.systemId&&this.system._set(this.systemId,this),this._processingStatus=pP.Running;let e=WN(this.options.input);switch(this.system._sendInspectionEvent({type:`@xstate.event`,sourceRef:this._parent,actorRef:this,event:e}),this._snapshot.status){case`done`:return this.update(this._snapshot,e),this;case`error`:return this._error(this._snapshot.error),this}if(this._parent||this.system.start(),this.logic.start)try{this.logic.start(this._snapshot,this._actorScope)}catch(e){return this._snapshot={...this._snapshot,status:`error`,error:e},this._error(e),this}return this.update(this._snapshot,e),this.options.devTools&&this.attachDevTools(),this.mailbox.start(),this}_process(e){let t,n;try{t=this.logic.transition(this._snapshot,e,this._actorScope)}catch(e){n={err:e}}if(n){let{err:e}=n;this._snapshot={...this._snapshot,status:`error`,error:e},this._error(e);return}this.update(t,e),e.type===`xstate.stop`&&(this._stopProcedure(),this._complete())}_stop(){return this._processingStatus===pP.Stopped?this:(this.mailbox.clear(),this._processingStatus===pP.NotStarted?(this._processingStatus=pP.Stopped,this):(this.mailbox.enqueue({type:zN}),this))}stop(){if(this._parent)throw Error(`A non-root actor cannot be stopped directly.`);return this._stop()}_complete(){for(let e of this.observers)try{e.complete?.()}catch(e){GN(e)}this.observers.clear(),this.eventListeners.clear()}_reportError(e){if(!this.observers.size){this._parent||GN(e),this.eventListeners.clear();return}let t=!1;for(let n of this.observers){let r=n.error;t||=!r;try{r?.(e)}catch(e){GN(e)}}this.observers.clear(),this.eventListeners.clear(),t&&GN(e)}_error(e){this._stopProcedure(),this._reportError(e),this._parent&&this.system._relay(this,this._parent,UN(this.id,e))}_stopProcedure(){return this._processingStatus===pP.Running?(this.system.scheduler.cancelAll(this),this.mailbox.clear(),this.mailbox=new PN(this._process.bind(this)),this._processingStatus=pP.Stopped,this.system._unregister(this),this):this}_send(e){this._processingStatus!==pP.Stopped&&this.mailbox.enqueue(e)}send(e){this.system._relay(void 0,this,e)}attachDevTools(){let{devTools:e}=this.options;e&&(typeof e==`function`?e:NN)(this)}toJSON(){return{xstate$$type:1,id:this.id}}getPersistedSnapshot(e){return this.logic.getPersistedSnapshot(this._snapshot,e)}[KN](){return this}getSnapshot(){return this._snapshot}};function gP(e,...[t]){return new hP(e,t)}function _P(e,t,n,r,{sendId:i}){return[t,{sendId:typeof i==`function`?i(n,r):i},void 0]}function vP(e,t){e.defer(()=>{e.system.scheduler.cancel(e.self,t.sendId)})}function yP(e){function t(e,t){}return t.type=`xstate.cancel`,t.sendId=e,t.resolve=_P,t.execute=vP,t}function bP(e,t,n,r,{id:i,systemId:a,src:o,input:s,syncSnapshot:c}){let l=typeof o==`string`?sP(t.machine,o):o,u=typeof i==`function`?i(n):i,d,f;return l&&(f=typeof s==`function`?s({context:t.context,event:n.event,self:e.self}):s,d=gP(l,{id:u,src:o,parent:e.self,syncSnapshot:c,systemId:a,input:f})),[RF(t,{children:{...t.children,[u]:d}}),{id:i,systemId:a,actorRef:d,src:o,input:f},void 0]}function xP(e,{actorRef:t}){t&&e.defer(()=>{t._processingStatus!==pP.Stopped&&t.start()})}function SP(...[e,{id:t,systemId:n,input:r,syncSnapshot:i=!1}={}]){function a(e,t){}return a.type=`xstate.spawnChild`,a.id=t,a.systemId=n,a.src=e,a.input=r,a.syncSnapshot=i,a.resolve=bP,a.execute=xP,a}function CP(e,t,n,r,{actorRef:i}){let a=typeof i==`function`?i(n,r):i,o=typeof a==`string`?t.children[a]:a,s=t.children;return o&&(s={...s},delete s[o.id]),[RF(t,{children:s}),o,void 0]}function wP(e,t){let n=t.getSnapshot();if(n&&`children`in n)for(let t of Object.values(n.children))wP(e,t);e.system._unregister(t)}function TP(e,t){if(t){if(wP(e,t),t._processingStatus!==pP.Running){e.stopChild(t);return}e.defer(()=>{e.stopChild(t)})}}function EP(e){function t(e,t){}return t.type=`xstate.stopChild`,t.actorRef=e,t.resolve=CP,t.execute=TP,t}function DP(e,t,{stateValue:n}){if(typeof n==`string`&&BP(n)){let t=e.machine.getStateNodeById(n);return e._nodes.some(e=>e===t)}return e.matches(n)}function OP(e){function t(){return!1}return t.check=DP,t.stateValue=e,t}function kP(e,{context:t,event:n},{guards:r}){return r.every(r=>jP(r,t,n,e))}function AP(e){function t(e,t){return!1}return t.check=kP,t.guards=e,t}function jP(e,t,n,r){let{machine:i}=r,a=typeof e==`function`,o=a?e:i.implementations.guards[typeof e==`string`?e:e.type];if(!a&&!o)throw Error(`Guard '${typeof e==`string`?e:e.type}' is not implemented.'.`);if(typeof o!=`function`)return jP(o,t,n,r);let s={context:t,event:n},c=a||typeof e==`string`?void 0:`params`in e?typeof e.params==`function`?e.params({context:t,event:n}):e.params:void 0;return`check`in o?o.check(r,s,o):o(s,c)}function MP(e){return e.type===`atomic`||e.type===`final`}function NP(e){return Object.values(e.states).filter(e=>e.type!==`history`)}function PP(e,t){let n=[];if(t===e)return n;let r=e.parent;for(;r&&r!==t;)n.push(r),r=r.parent;return n}function FP(e){let t=new Set(e),n=LP(t);for(let e of t)if(e.type===`compound`&&(!n.get(e)||!n.get(e).length))XP(e).forEach(e=>t.add(e));else if(e.type===`parallel`){for(let n of NP(e))if(n.type!==`history`&&!t.has(n)){let e=XP(n);for(let n of e)t.add(n)}}for(let e of t){let n=e.parent;for(;n;)t.add(n),n=n.parent}return t}function IP(e,t){let n=t.get(e);if(!n)return{};if(e.type===`compound`){let e=n[0];if(e){if(MP(e))return e.key}else return{}}let r={};for(let e of n)r[e.key]=IP(e,t);return r}function LP(e){let t=new Map;for(let n of e)t.has(n)||t.set(n,[]),n.parent&&(t.has(n.parent)||t.set(n.parent,[]),t.get(n.parent).push(n));return t}function RP(e,t){return IP(e,LP(FP(t)))}function zP(e,t){return t.type===`compound`?NP(t).some(t=>t.type===`final`&&e.has(t)):t.type===`parallel`?NP(t).every(t=>zP(e,t)):t.type===`final`}var BP=e=>e[0]===IN;function VP(e,t){let n=e.transitions.get(t),r=[...e.transitions.keys()].filter(e=>e!==t&&cP(t,e)).sort((e,t)=>t.length-e.length).flatMap(t=>e.transitions.get(t));return n?[...n,...r]:r}function HP(e){let t=e.config.after;if(!t)return[];let n=t=>{let n=BN(t,e.id),r=n.type;return e.entry.push(WF(n,{id:r,delay:t})),e.exit.push(yP(r)),r};return Object.keys(t).flatMap(e=>{let r=t[e],i=typeof r==`string`?{target:r}:r,a=Number.isNaN(+e)?e:+e,o=n(a);return $N(i).map(e=>({...e,event:o,delay:a}))}).map(t=>{let{delay:n}=t;return{...UP(e,t.event,t),delay:n}})}function UP(e,t,n){let r=iP(n.target),i=n.reenter??!1,a=qP(e,r),o={...n,actions:$N(n.actions),guard:n.guard,target:a,source:e,reenter:i,eventType:t,toJSON:()=>({...o,source:`#${e.id}`,target:a?a.map(e=>`#${e.id}`):void 0})};return o}function WP(e){let t=new Map;if(e.config.on)for(let n of Object.keys(e.config.on)){if(n===``)throw Error('Null events ("") cannot be specified as a transition key. Use `always: { ... }` instead.');let r=e.config.on[n];t.set(n,rP(r).map(t=>UP(e,n,t)))}if(e.config.onDone){let n=`xstate.done.state.${e.id}`;t.set(n,rP(e.config.onDone).map(t=>UP(e,n,t)))}for(let n of e.invoke){if(n.onDone){let r=`xstate.done.actor.${n.id}`;t.set(r,rP(n.onDone).map(t=>UP(e,r,t)))}if(n.onError){let r=`xstate.error.actor.${n.id}`;t.set(r,rP(n.onError).map(t=>UP(e,r,t)))}if(n.onSnapshot){let r=`xstate.snapshot.${n.id}`;t.set(r,rP(n.onSnapshot).map(t=>UP(e,r,t)))}}for(let n of e.after){let e=t.get(n.eventType);e||(e=[],t.set(n.eventType,e)),e.push(n)}return t}function GP(e){let t=[],n=r=>{Object.values(r).forEach(r=>{if(r.config.route&&r.config.id){let n=r.config.id,i=r.config.route.guard,a=({event:e})=>e.to===`#${n}`,o={...r.config.route,guard:i?AP([a,i]):a,target:`#${n}`};t.push(UP(e,`xstate.route`,o))}r.states&&n(r.states)})};n(e.states),t.length>0&&e.transitions.set(`xstate.route`,t)}function KP(e,t){let n=typeof t==`string`?e.states[t]:t?e.states[t.target]:void 0;if(!n&&t)throw Error(`Initial state node "${t}" not found on parent state node #${e.id}`);let r={source:e,actions:!t||typeof t==`string`?[]:$N(t.actions),eventType:null,reenter:!1,target:n?[n]:[],meta:typeof t==`object`?t.meta:void 0,description:typeof t==`object`?t.description:void 0,toJSON:()=>({...r,source:`#${e.id}`,target:n?[`#${n.id}`]:[]})};return r}function qP(e,t){if(t!==void 0)return t.map(t=>{if(typeof t!=`string`)return t;if(BP(t))return e.machine.getStateNodeById(t);let n=t[0]===`.`;if(n&&!e.parent)return $P(e,t.slice(1));let r=n?e.key+t:t;if(e.parent)try{return $P(e.parent,r)}catch(t){throw Error(`Invalid transition definition for state node '${e.id}':\n${t.message}`)}throw Error(`Invalid target: "${t}" is not a valid target from the root node. Did you mean ".${t}"?`)})}function JP(e){let t=iP(e.config.target);return t?{target:t.map(t=>typeof t==`string`?$P(e.parent,t):t)}:e.parent.type===`parallel`?{target:[e.parent]}:e.parent.initial}function YP(e){return e.type===`history`}function XP(e){let t=ZP(e);for(let n of t)for(let r of PP(n,e))t.add(r);return t}function ZP(e){let t=new Set;function n(e){if(!t.has(e)){if(t.add(e),e.type===`compound`)n(e.initial.target[0]);else if(e.type===`parallel`)for(let t of NP(e))n(t)}}return n(e),t}function QP(e,t){if(BP(t))return e.machine.getStateNodeById(t);if(!e.states)throw Error(`Unable to retrieve child state '${t}' from '${e.id}'; no child states exist.`);let n=e.states[t];if(!n)throw Error(`Child state '${t}' does not exist on '${e.id}'`);return n}function $P(e,t){if(typeof t==`string`&&BP(t))try{return e.machine.getStateNodeById(t)}catch{}let n=JN(t).slice(),r=e;for(;n.length;){let e=n.shift();if(!e.length)break;r=QP(r,e)}return r}function eF(e,t){if(typeof t==`string`){let n=e.states[t];if(!n)throw Error(`State '${t}' does not exist on '${e.id}'`);return[e,n]}let n=Object.keys(t),r=n.map(t=>QP(e,t)).filter(Boolean);return[e.machine.root,e].concat(r,n.reduce((n,r)=>{let i=QP(e,r);if(!i)return n;let a=eF(i,t[r]);return n.concat(a)},[]))}function tF(e,t,n,r){let i=QP(e,t).next(n,r);return!i||!i.length?e.next(n,r):i}function nF(e,t,n,r){let i=Object.keys(t),a=iF(QP(e,i[0]),t[i[0]],n,r);return!a||!a.length?e.next(n,r):a}function rF(e,t,n,r){let i=[];for(let a of Object.keys(t)){let o=t[a];if(!o)continue;let s=iF(QP(e,a),o,n,r);s&&i.push(...s)}return i.length?i:e.next(n,r)}function iF(e,t,n,r){return typeof t==`string`?tF(e,t,n,r):Object.keys(t).length===1?nF(e,t,n,r):rF(e,t,n,r)}function aF(e){return Object.keys(e.states).map(t=>e.states[t]).filter(e=>e.type===`history`)}function oF(e,t){let n=e;for(;n.parent&&n.parent!==t;)n=n.parent;return n.parent===t}function sF(e,t){let n=new Set(e),r=new Set(t);for(let e of n)if(r.has(e))return!0;for(let e of r)if(n.has(e))return!0;return!1}function cF(e,t,n){let r=new Set;for(let i of e){let e=!1,a=new Set;for(let o of r)if(sF(fF([i],t,n),fF([o],t,n))){if(oF(i.source,o.source))a.add(o);else{e=!0;break}}if(!e){for(let e of a)r.delete(e);r.add(i)}}return Array.from(r)}function lF(e){let[t,...n]=e;for(let e of PP(t,void 0))if(n.every(t=>oF(t,e)))return e}function uF(e,t){if(!e.target)return[];let n=new Set;for(let r of e.target)if(YP(r)){if(t[r.id])for(let e of t[r.id])n.add(e);else for(let e of uF(JP(r),t))n.add(e)}else n.add(r);return[...n]}function dF(e,t){let n=uF(e,t);if(!n)return;if(!e.reenter&&n.every(t=>t===e.source||oF(t,e.source)))return e.source;let r=lF(n.concat(e.source));if(r)return r;if(!e.reenter)return e.source.machine.root}function fF(e,t,n){let r=new Set;for(let i of e)if(i.target?.length){let e=dF(i,n);i.reenter&&i.source===e&&r.add(e);for(let n of t)oF(n,e)&&r.add(n)}return[...r]}function pF(e,t){if(e.length!==t.size)return!1;for(let n of e)if(!t.has(n))return!1;return!0}function mF(e,t,n,r,i){return hF([{target:[...ZP(e)],source:e,reenter:!0,actions:[],eventType:null,toJSON:null}],t,n,r,!0,i)}function hF(e,t,n,r,i,a){let o=[];if(!e.length)return[t,o];let s=n.actionExecutor;n.actionExecutor=e=>{o.push(e),s(e)};try{let s=new Set(t._nodes),c=t.historyValue,l=cF(e,s,c),u=t;i||([u,c]=SF(u,r,n,l,s,c,a,n.actionExecutor)),u=TF(u,r,n,l.flatMap(e=>e.actions),a,void 0),u=_F(u,r,n,l,s,a,c,i);let d=[...s];u.status===`done`&&(u=TF(u,r,n,d.sort((e,t)=>t.order-e.order).flatMap(e=>e.exit),a,void 0));try{return c===t.historyValue&&pF(t._nodes,s)?[u,o]:[RF(u,{_nodes:d,historyValue:c}),o]}catch(e){throw e}}finally{n.actionExecutor=s}}function gF(e,t,n,r,i){if(r.output===void 0)return;let a=VN(i.id,i.output!==void 0&&i.parent?eP(i.output,e.context,t,n.self):void 0);return eP(r.output,e.context,a,n.self)}function _F(e,t,n,r,i,a,o,s){let c=e,l=new Set,u=new Set;vF(r,o,u,l),s&&u.add(e.machine.root);let d=new Set;for(let e of[...l].sort((e,t)=>e.order-t.order)){i.add(e);let r=[];r.push(...e.entry);for(let t of e.invoke)r.push(SP(t.src,{...t,syncSnapshot:!!t.onSnapshot}));if(u.has(e)){let t=e.initial.actions;r.push(...t)}if(c=TF(c,t,n,r,a,e.invoke.map(e=>e.id)),e.type===`final`){let r=e.parent,o=r?.type===`parallel`?r:r?.parent,s=o||e;for(r?.type===`compound`&&a.push(VN(r.id,e.output===void 0?void 0:eP(e.output,c.context,t,n.self)));o?.type===`parallel`&&!d.has(o)&&zP(i,o);)d.add(o),a.push(VN(o.id)),s=o,o=o.parent;if(o)continue;c=RF(c,{status:`done`,output:gF(c,t,n,c.machine.root,s)})}}return c}function vF(e,t,n,r){for(let i of e){let e=dF(i,t);for(let a of i.target||[])!YP(a)&&(i.source!==a||i.source!==e||i.reenter)&&(r.add(a),n.add(a)),yF(a,t,n,r);let a=uF(i,t);for(let o of a){let a=PP(o,e);e?.type===`parallel`&&a.push(e),bF(r,t,n,a,!i.source.parent&&i.reenter?void 0:e)}}}function yF(e,t,n,r){if(YP(e)){if(t[e.id]){let i=t[e.id];for(let e of i)r.add(e),yF(e,t,n,r);for(let a of i)xF(a,e.parent,r,t,n)}else{let i=JP(e);for(let a of i.target)r.add(a),i===e.parent?.initial&&n.add(e.parent),yF(a,t,n,r);for(let a of i.target)xF(a,e.parent,r,t,n)}}else if(e.type===`compound`){let[i]=e.initial.target;YP(i)||(r.add(i),n.add(i)),yF(i,t,n,r),xF(i,e,r,t,n)}else if(e.type===`parallel`)for(let i of NP(e).filter(e=>!YP(e)))[...r].some(e=>oF(e,i))||(YP(i)||(r.add(i),n.add(i)),yF(i,t,n,r))}function bF(e,t,n,r,i){for(let a of r)if((!i||oF(a,i))&&e.add(a),a.type===`parallel`)for(let r of NP(a).filter(e=>!YP(e)))[...e].some(e=>oF(e,r))||(e.add(r),yF(r,t,n,e))}function xF(e,t,n,r,i){bF(n,r,i,PP(e,t))}function SF(e,t,n,r,i,a,o,s){let c=e,l=fF(r,i,a);l.sort((e,t)=>t.order-e.order);let u;for(let e of l)for(let t of aF(e)){let n;n=t.history===`deep`?t=>MP(t)&&oF(t,e):t=>t.parent===e,u??={...a},u[t.id]=Array.from(i).filter(n)}for(let e of l)c=TF(c,t,n,[...e.exit,...e.invoke.map(e=>EP(e.id))],o,void 0),i.delete(e);return[c,u||a]}function CF(e,t){return e.implementations.actions[t]}function wF(e,t,n,r,i,a){let{machine:o}=e,s=e;for(let e of r){let r=typeof e==`function`,c=r?e:CF(o,typeof e==`string`?e:e.type),l={context:s.context,event:t,self:n.self,system:n.system},u=r||typeof e==`string`?void 0:`params`in e?typeof e.params==`function`?e.params({context:s.context,event:t}):e.params:void 0;if(!c||!(`resolve`in c)){n.actionExecutor({type:typeof e==`string`?e:typeof e==`object`?e.type:e.name||`(anonymous)`,info:l,params:u,exec:c});continue}let d=c,[f,p,m]=d.resolve(n,s,l,u,c,i);s=f,`retryResolve`in d&&a?.push([d,p]),`execute`in d&&n.actionExecutor({type:d.type,info:l,params:p,exec:d.execute.bind(null,n,p)}),m&&(s=wF(s,t,n,m,i,a))}return s}function TF(e,t,n,r,i,a){let o=a?[]:void 0,s=wF(e,t,n,r,{internalQueue:i,deferredActorIds:a},o);return o?.forEach(([e,t])=>{e.retryResolve(n,s,t)}),s}function EF(e,t,n,r){let i=e,a=[];function o(e,t,r){n.system._sendInspectionEvent({type:`@xstate.microstep`,actorRef:n.self,event:t,snapshot:e[0],_transitions:r}),a.push(e)}if(t.type===`xstate.stop`)return i=RF(DF(i,t,n),{status:`stopped`}),o([i,[]],t,[]),{snapshot:i,microsteps:a};let s=t;if(s.type!==RN){let t=s,c=nP(t),l=OF(t,i);if(c&&!l.length)return i=RF(e,{status:`error`,error:t.error}),o([i,[]],t,[]),{snapshot:i,microsteps:a};let u=hF(l,e,n,s,!1,r);i=u[0],o(u,t,l)}let c=!0,l=e.machine.options?.maxIterations??1/0,u=0;for(;i.status===`active`;){if(u++,u>l)throw Error(`Infinite loop detected: the machine has processed more than ${l} microsteps without reaching a stable state. This usually happens when there's a cycle of transitions (e.g., eventless transitions or raised events causing state A -> B -> C -> A).`);let e=c?kF(i,s):[],t=e.length?i:void 0;if(!e.length){if(!r.length)break;s=r.shift(),e=OF(s,i)}let a=hF(e,i,n,s,!1,r);i=a[0],c=i!==t,o(a,s,e)}return i.status!==`active`&&DF(i,s,n),{snapshot:i,microsteps:a}}function DF(e,t,n){return TF(e,t,n,Object.values(e.children).map(e=>EP(e)),[],void 0)}function OF(e,t){return t.machine.getTransitionData(t,e)}function kF(e,t){let n=new Set,r=e._nodes.filter(MP);for(let i of r)loop:for(let r of[i].concat(PP(i,void 0)))if(r.always){for(let i of r.always)if(i.guard===void 0||jP(i.guard,e.context,t,e)){n.add(i);break loop}}return cF(Array.from(n),new Set(e._nodes),e.historyValue)}function AF(e,t){return RP(e,[...FP(eF(e,t))])}function jF(e){return!!e&&typeof e==`object`&&`machine`in e&&`value`in e}var MF=function(e){return qN(e,this.value)},NF=function(e){return this.tags.has(e)},PF=function(e){let t=this.machine.getTransitionData(this,e);return!!t?.length&&t.some(e=>e.target!==void 0||e.actions.length)},FF=function(){let{_nodes:e,tags:t,machine:n,getMeta:r,toJSON:i,can:a,hasTag:o,matches:s,...c}=this;return{...c,tags:Array.from(t)}},IF=function(){return this._nodes.reduce((e,t)=>(t.meta!==void 0&&(e[t.id]=t.meta),e),{})};function LF(e,t){return{status:e.status,output:e.output,error:e.error,machine:t,context:e.context,_nodes:e._nodes,value:RP(t.root,e._nodes),tags:new Set(e._nodes.flatMap(e=>e.tags)),children:e.children,historyValue:e.historyValue||{},matches:MF,hasTag:NF,can:PF,getMeta:IF,toJSON:FF}}function RF(e,t={}){return LF({...e,...t},e.machine)}function zF(e){if(typeof e!=`object`||!e)return{};let t={};for(let n in e){let r=e[n];Array.isArray(r)&&(t[n]=r.map(e=>({id:e.id})))}return t}function BF(e,t){let{_nodes:n,tags:r,machine:i,children:a,context:o,can:s,hasTag:c,matches:l,getMeta:u,toJSON:d,...f}=e,p={};for(let e in a){let n=a[e];p[e]={snapshot:n.getPersistedSnapshot(t),src:n.src,systemId:n.systemId,syncSnapshot:n._syncSnapshot}}return{...f,context:VF(o),children:p,historyValue:zF(f.historyValue)}}function VF(e){let t;for(let n in e){let r=e[n];if(r&&typeof r==`object`){if(`sessionId`in r&&`send`in r&&`ref`in r)t??=Array.isArray(e)?e.slice():{...e},t[n]={xstate$$type:1,id:r.id};else{let i=VF(r);i!==r&&(t??=Array.isArray(e)?e.slice():{...e},t[n]=i)}}}return t??e}function HF(e,t,n,r,{event:i,id:a,delay:o},{internalQueue:s}){let c=t.machine.implementations.delays;if(typeof i==`string`)throw Error(`Only event objects may be used with raise; use raise({ type: "${i}" }) instead`);let l=typeof i==`function`?i(n,r):i,u;if(typeof o==`string`){let e=c&&c[o];u=typeof e==`function`?e(n,r):e}else u=typeof o==`function`?o(n,r):o;return typeof u!=`number`&&s.push(l),[t,{event:l,id:a,delay:u},void 0]}function UF(e,t){let{event:n,delay:r,id:i}=t;if(typeof r==`number`){e.defer(()=>{let t=e.self;e.system.scheduler.schedule(t,t,n,r,i)});return}}function WF(e,t){function n(e,t){}return n.type=`xstate.raise`,n.event=e,n.id=t?.id,n.delay=t?.delay,n.resolve=HF,n.execute=UF,n}function GF(e,{machine:t,context:n},r,i){let a=(a,o)=>{if(typeof a==`string`){let s=sP(t,a);if(!s)throw Error(`Actor logic '${a}' not implemented in machine '${t.id}'`);let c=gP(s,{id:o?.id,parent:e.self,syncSnapshot:o?.syncSnapshot,input:typeof o?.input==`function`?o.input({context:n,event:r,self:e.self}):o?.input,src:a,systemId:o?.systemId});return i[c.id]=c,c}return gP(a,{id:o?.id,parent:e.self,syncSnapshot:o?.syncSnapshot,input:o?.input,src:a,systemId:o?.systemId})};return(t,n)=>{let r=a(t,n);return i[r.id]=r,e.defer(()=>{r._processingStatus!==pP.Stopped&&r.start()}),r}}function KF(e,t,n,r,{assignment:i}){if(!t.context)throw Error("Cannot assign to undefined `context`. Ensure that `context` is defined in the machine config.");let a={},o={context:t.context,event:n.event,spawn:GF(e,t,n.event,a),self:e.self,system:e.system},s={};if(typeof i==`function`)s=i(o,r);else for(let e of Object.keys(i)){let t=i[e];s[e]=typeof t==`function`?t(o,r):t}return[RF(t,{context:Object.assign({},t.context,s),children:Object.keys(a).length?{...t.children,...a}:t.children}),void 0,void 0]}function qF(e){function t(e,t){}return t.type=`xstate.assign`,t.assignment=e,t.resolve=KF,t}var JF=new WeakMap;function YF(e,t,n){let r=JF.get(e);return r?t in r||(r[t]=n()):(r={[t]:n()},JF.set(e,r)),r[t]}var XF={},ZF=e=>typeof e==`string`?{type:e}:typeof e==`function`?`resolve`in e?{type:e.type}:{type:e.name}:e,QF=class e{constructor(t,n){if(this.config=t,this.key=void 0,this.id=void 0,this.type=void 0,this.path=void 0,this.states=void 0,this.history=void 0,this.entry=void 0,this.exit=void 0,this.parent=void 0,this.machine=void 0,this.meta=void 0,this.output=void 0,this.order=-1,this.description=void 0,this.tags=[],this.transitions=void 0,this.always=void 0,this.parent=n._parent,this.key=n._key,this.machine=n._machine,this.path=this.parent?this.parent.path.concat(this.key):[],this.id=this.config.id||[this.machine.id,...this.path].join(`.`),this.type=this.config.type||(this.config.states&&Object.keys(this.config.states).length?`compound`:this.config.history?`history`:`atomic`),this.description=this.config.description,this.order=this.machine.idMap.size,this.machine.idMap.set(this.id,this),this.states=this.config.states?ZN(this.config.states,(t,n)=>new e(t,{_parent:this,_key:n,_machine:this.machine})):XF,this.type===`compound`&&!this.config.initial)throw Error(`No initial state specified for compound state node "#${this.id}". Try adding { initial: "${Object.keys(this.states)[0]}" } to the state config.`);this.history=this.config.history===!0?`shallow`:this.config.history||!1,this.entry=$N(this.config.entry).slice(),this.exit=$N(this.config.exit).slice(),this.meta=this.config.meta,this.output=this.type===`final`||!this.parent?this.config.output:void 0,this.tags=$N(t.tags).slice()}_initialize(){this.transitions=WP(this),this.config.always&&(this.always=rP(this.config.always).map(e=>UP(this,``,e))),Object.keys(this.states).forEach(e=>{this.states[e]._initialize()})}get definition(){return{id:this.id,key:this.key,version:this.machine.version,type:this.type,initial:this.initial?{target:this.initial.target,source:this,actions:this.initial.actions.map(ZF),eventType:null,reenter:!1,meta:this.initial.meta,description:this.initial.description,toJSON:()=>({target:this.initial.target.map(e=>`#${e.id}`),source:`#${this.id}`,actions:this.initial.actions.map(ZF),eventType:null,meta:this.initial.meta,description:this.initial.description})}:void 0,history:this.history,states:ZN(this.states,e=>e.definition),on:this.on,transitions:[...this.transitions.values()].flat().map(e=>({...e,actions:e.actions.map(ZF)})),entry:this.entry.map(ZF),exit:this.exit.map(ZF),meta:this.meta,order:this.order||-1,output:this.output,invoke:this.invoke,description:this.description,tags:this.tags}}toJSON(){return this.definition}get invoke(){return YF(this,`invoke`,()=>$N(this.config.invoke).map((e,t)=>{let{src:n,systemId:r}=e,i=e.id??oP(this.id,t),a=typeof n==`string`?n:`xstate.invoke.${oP(this.id,t)}`;return{...e,src:a,id:i,systemId:r,toJSON(){let{onDone:t,onError:n,...r}=e;return{...r,type:`xstate.invoke`,src:a,id:i}}}}))}get on(){return YF(this,`on`,()=>[...this.transitions].flatMap(([e,t])=>t.map(t=>[e,t])).reduce((e,[t,n])=>(e[t]=e[t]||[],e[t].push(n),e),{}))}get after(){return YF(this,`delayedTransitions`,()=>HP(this))}get initial(){return YF(this,`initial`,()=>KP(this,this.config.initial))}next(e,t){let n=t.type,r=[],i,a=YF(this,`candidates-${n}`,()=>VP(this,n));for(let o of a){let{guard:a}=o,s=e.context,c=!1;try{c=!a||jP(a,s,t,e)}catch(e){let t=typeof a==`string`?a:typeof a==`object`?a.type:void 0;throw Error(`Unable to evaluate guard ${t?`'${t}' `:``}in transition for event '${n}' in state node '${this.id}':\n${e.message}`)}if(c){r.push(...o.actions),i=o;break}}return i?[i]:void 0}get events(){return YF(this,`events`,()=>{let{states:e}=this,t=new Set(this.ownEvents);if(e)for(let n of Object.keys(e)){let r=e[n];if(r.states)for(let e of r.events)t.add(`${e}`)}return Array.from(t)})}get ownEvents(){let e=Object.keys(Object.fromEntries(this.transitions)),t=new Set(e.filter(e=>this.transitions.get(e).some(e=>!(!e.target&&!e.actions.length&&!e.reenter))));return Array.from(t)}},$F=class e{constructor(e,t){this.config=e,this.version=void 0,this.schemas=void 0,this.implementations=void 0,this.options=void 0,this.__xstatenode=!0,this.idMap=new Map,this.root=void 0,this.id=void 0,this.states=void 0,this.events=void 0,this.id=e.id||`(machine)`,this.implementations={actors:t?.actors??{},actions:t?.actions??{},delays:t?.delays??{},guards:t?.guards??{}},this.version=this.config.version,this.schemas=this.config.schemas,this.options={maxIterations:1/0,...this.config.options},this.transition=this.transition.bind(this),this.getInitialSnapshot=this.getInitialSnapshot.bind(this),this.getPersistedSnapshot=this.getPersistedSnapshot.bind(this),this.restoreSnapshot=this.restoreSnapshot.bind(this),this.start=this.start.bind(this),this.root=new QF(e,{_key:this.id,_machine:this}),this.root._initialize(),GP(this.root),this.states=this.root.states,this.events=this.root.events}provide(t){let{actions:n,guards:r,actors:i,delays:a}=this.implementations;return new e(this.config,{actions:{...n,...t.actions},guards:{...r,...t.guards},actors:{...i,...t.actors},delays:{...a,...t.delays}})}resolveState(e){let t=AF(this.root,e.value),n=FP(eF(this.root,t));return LF({_nodes:[...n],context:e.context||{},children:{},status:zP(n,this.root)?`done`:e.status||`active`,output:e.output,error:e.error,historyValue:e.historyValue},this)}transition(e,t,n){return EF(e,t,n,[]).snapshot}microstep(e,t,n){return EF(e,t,n,[]).microsteps.map(([e])=>e)}getTransitionData(e,t){return iF(this.root,e.value,e,t)||[]}_getPreInitialState(e,t,n){let{context:r}=this.config,i=LF({context:typeof r!=`function`&&r?r:{},_nodes:[this.root],children:{},status:`active`},this);return typeof r==`function`?TF(i,t,e,[qF(({spawn:e,event:t,self:n})=>r({spawn:e,input:t.input,self:n}))],n,void 0):i}getInitialSnapshot(e,t){let n=WN(t),r=[],i=LF({context:typeof this.config.context!=`function`&&this.config.context?this.config.context:{},_nodes:[this.root],children:{},status:`active`},this);try{i=this._getPreInitialState(e,n,r);let[t]=mF(this.root,i,e,n,r),{snapshot:a}=EF(t,n,e,r);return a}catch(e){return RF(i,{status:`error`,error:e})}}start(e){Object.values(e.children).forEach(e=>{e.getSnapshot().status===`active`&&e.start()})}getStateNodeById(e){let t=JN(e),n=t.slice(1),r=BP(t[0])?t[0].slice(1):t[0],i=this.idMap.get(r);if(!i)throw Error(`Child state node '#${r}' does not exist on machine '${this.id}'`);return $P(i,n)}get definition(){return this.root.definition}toJSON(){return this.definition}getPersistedSnapshot(e,t){return BF(e,t)}restoreSnapshot(e,t){let n={},r=e.children;Object.keys(r).forEach(e=>{let i=r[e],a=i.snapshot,o=i.src,s=typeof o==`string`?sP(this,o):o;if(!s)return;let c=gP(s,{id:e,parent:t.self,syncSnapshot:i.syncSnapshot,snapshot:a,src:o,systemId:i.systemId});n[e]=c});function i(e,t){if(t instanceof QF)return t;try{return e.machine.getStateNodeById(t.id)}catch{}}function a(e,t){if(!t||typeof t!=`object`)return{};let n={};for(let r in t){let a=t[r];for(let t of a){let a=i(e,t);a&&(n[r]??=[],n[r].push(a))}}return n}let o=a(this.root,e.historyValue),s=LF({...e,children:n,_nodes:Array.from(FP(eF(this.root,e.value))),historyValue:o},this),c=new Set;function l(e,t){if(!c.has(e)){c.add(e);for(let n in e){let r=e[n];if(r&&typeof r==`object`){if(`xstate$$type`in r&&r.xstate$$type===1){e[n]=t[r.id];continue}l(r,t)}}}}return l(s.context,n),s}};function eI(e,t,n,r,{event:i}){return[t,{event:typeof i==`function`?i(n,r):i},void 0]}function tI(e,{event:t}){e.defer(()=>e.emit(t))}function nI(e){function t(e,t){}return t.type=`xstate.emit`,t.event=e,t.resolve=eI,t.execute=tI,t}var rI=function(e){return e.Parent=`#_parent`,e.Internal=`#_internal`,e}({});function iI(e,t,n,r,{to:i,event:a,id:o,delay:s},c){let l=t.machine.implementations.delays;if(typeof a==`string`)throw Error(`Only event objects may be used with sendTo; use sendTo({ type: "${a}" }) instead`);let u=typeof a==`function`?a(n,r):a,d;if(typeof s==`string`){let e=l&&l[s];d=typeof e==`function`?e(n,r):e}else d=typeof s==`function`?s(n,r):s;let f=typeof i==`function`?i(n,r):i,p;if(typeof f==`string`){if(p=f===rI.Parent?e.self._parent:f===rI.Internal?e.self:f.startsWith(`#_`)?t.children[f.slice(2)]:c.deferredActorIds?.includes(f)?f:t.children[f],!p)throw Error(`Unable to send event to actor '${f}' from machine '${t.machine.id}'.`)}else p=f||e.self;return[t,{to:p,targetId:typeof f==`string`?f:void 0,event:u,id:o,delay:d},void 0]}function aI(e,t,n){typeof n.to==`string`&&(n.to=t.children[n.to])}function oI(e,t){e.defer(()=>{let{to:n,event:r,delay:i,id:a}=t;if(typeof i==`number`){e.system.scheduler.schedule(e.self,n,r,i,a);return}e.system._relay(e.self,n,r.type===`xstate.error`?UN(e.self.id,r.data):r)})}function sI(e,t,n){function r(e,t){}return r.type=`xstate.sendTo`,r.to=e,r.event=t,r.id=n?.id,r.delay=n?.delay,r.resolve=iI,r.retryResolve=aI,r.execute=oI,r}function cI(e,t){return sI(rI.Parent,e,t)}function lI(e,t,n,r,{collect:i}){let a=[],o=function(e){a.push(e)};return o.assign=(...e)=>{a.push(qF(...e))},o.cancel=(...e)=>{a.push(yP(...e))},o.raise=(...e)=>{a.push(WF(...e))},o.sendTo=(...e)=>{a.push(sI(...e))},o.sendParent=(...e)=>{a.push(cI(...e))},o.spawnChild=(...e)=>{a.push(SP(...e))},o.stopChild=(...e)=>{a.push(EP(...e))},o.emit=(...e)=>{a.push(nI(...e))},i({context:n.context,event:n.event,enqueue:o,check:e=>jP(e,t.context,n.event,t),self:e.self,system:e.system},r),[t,void 0,a]}function uI(e){function t(e,t){}return t.type=`xstate.enqueueActions`,t.collect=e,t.resolve=lI,t}function dI(e,t,n,r,{value:i,label:a}){return[t,{value:typeof i==`function`?i(n,r):i,label:a},void 0]}function fI({logger:e},{value:t,label:n}){n?e(n,t):e(t)}function pI(e=({context:e,event:t})=>({context:e,event:t}),t){function n(e,t){}return n.type=`xstate.log`,n.value=e,n.label=t,n.resolve=dI,n.execute=fI,n}function mI(e,t){return new $F(e,t)}function hI(e){let t=gP(e),n=dP(t,{clock:t.system._clock,logger:t.system._logger});return t.system=n,{self:t,defer:()=>{},id:``,logger:()=>{},sessionId:``,stopChild:()=>{},system:n,emit:()=>{},actionExecutor:()=>{}}}function gI({schemas:e,actors:t,actions:n,guards:r,delays:i}){return{assign:qF,sendTo:sI,raise:WF,log:pI,cancel:yP,stopChild:EP,enqueueActions:uI,emit:nI,spawnChild:SP,createStateConfig:e=>e,createAction:e=>e,createMachine:a=>mI({...a,schemas:e},{actors:t,actions:n,guards:r,delays:i}),extend:a=>gI({schemas:e,actors:t,actions:{...n,...a.actions},guards:{...r,...a.guards},delays:{...i,...a.delays}})}}function _I(e,t,n){let r=[],i=hI(e);return i.actionExecutor=e=>{r.push(e)},[e.transition(t,n,i),r]}function vI(e,...[t]){let n=[],r=hI(e);return r.actionExecutor=e=>{n.push(e)},[e.getInitialSnapshot(r,t),n]}var yI=function(e){return e.Atomic=`atomic`,e.Compound=`compound`,e.Parallel=`parallel`,e.Final=`final`,e.History=`history`,e}({}),bI=function(e){return e.Shallow=`shallow`,e.Deep=`deep`,e}({}),xI=`states.waitEnded`,SI=new WeakMap;function CI(e,t){let n=()=>void 0;return SI.set(n,{wait:e,entered:t}),n}function wI(e,t){return e===void 0?t:Array.isArray(e)?[...e,t]:[e,t]}function TI(e){if(e.wait)return!0;for(let t of e.children.values())if(TI(t))return!0;return!1}function EI(e,t,n,r,i=[]){let a={};for(let[o,s]of Object.entries(e)){let e=`${t}.${o}`,c={children:new Map};n.children.set(o,c);let{wait:l,when:u=[],states:d,...f}=s,p={...f.on};if(u.forEach(([t,n],a)=>{let s={type:`states.when.${e}.${a}`};p[s.type]=n,r.push({path:[...i,o],test:t,event:s})}),l&&d)throw S(Error(`The state "${e}" holds a wait and states of its own: put the wait on one of its states.`),`SP0523`,void 0);if(l&&(c.wait={id:e,seconds:l.seconds}),c.wait&&(p[xI]=l?.then),a[o]={...f,on:p,...d&&{states:EI(d,e,c,r,[...i,o])},...c.wait&&{entry:wI(f.entry,CI(c.wait,!0)),exit:wI(f.exit,CI(c.wait,!1))}},s.type===`parallel`&&[...c.children.values()].filter(TI).length>1)throw S(Error(`The parallel state "${e}" holds waits in more than one of its states: a machine counts one wait at a time, so give the others a machine of their own.`),`SP0524`,void 0)}return a}function DI(e,t){if(typeof t==`string`)return e.children.get(t)?.wait;if(typeof t==`object`&&t)for(let n in t){let r=e.children.get(n),i=r&&DI(r,Reflect.get(t,n));if(i)return i}}function OI(e,t){return typeof e.seconds==`number`?e.seconds:e.seconds({context:t})}function kI(e,t=[]){return Object.values(e.states).flatMap(e=>{if(e.type===`history`)return[];let n=[...t,e.key];return[n.join(`.`),...kI(e,n)]})}function AI(e){return typeof e==`string`?{type:e}:e}function jI(e){let t={};for(let[n,r]of Object.entries(e.historyValue))t[n]=r.map(e=>({id:e.id}));return t}function MI(e,t){let n=e;for(let e of t)if(typeof n==`string`){if(n!==e)return!1;n=void 0}else if(typeof n==`object`&&n&&e in n)n=Reflect.get(n,e);else return!1;return!0}function NI(e,t,n,r=[]){for(let i of Object.values(e.states)){if(i.type===`history`)continue;let e=[...r,i.key];if(i.key in t)throw S(Error(`The state "${i.id}" shares its key with a property of its parent's tag: give it another key.`),`SP0228`,void 0);let a=x();Object.defineProperty(t,i.key,{value:a,enumerable:!0}),n.push([a,e]),NI(i,a,n,e)}}function PI(e){return typeof e==`object`&&b in e}var FI=C(`machinePaused`),II=new Map,LI=new Set,RI=new Map,zI=[],BI=new Map;function VI(e){return BI.has(e)}function HI(e){return BI.get(e)}var UI=new Map,WI=II;function GI(e){for(let t of II.values())e(t);return LI.add(e),()=>LI.delete(e)}function KI(e){return UI.get(e)}function qI(e,t){RI.get(t)?.(e)}function JI(e){let t=[],n=GI(n=>{t.push(e.onAdd(n.trait,()=>{e.has(zn)||Hi(e,`machines`)}));let r=RI.get(n.trait);r&&t.push(e.onAdd(n.trait,r),e.onRemove(n.trait,e=>{for(let t of n.tagNames.values())e.has(t)&&e.remove(t)}))});return()=>{n();for(let e of t)e()}}var YI=[],XI=[],ZI=[],QI=0,$I;function eL(e){let t={children:new Map},n=[],{context:r={},heldBy:i=[],tags:a,...o}=e,s=mI({...o,states:EI(e.states,e.id,t,n)});n.sort((e,t)=>t.path.length-e.path.length);let c=TI(t),l=Object.keys(r),[u]=vI(s),d=u.value,f={waited:0,paused:()=>({}),history:()=>({}),state:typeof d==`string`?d:()=>structuredClone(d)};for(let[e,t]of Object.entries(r))f[e]=typeof t==`object`&&t?()=>structuredClone(t):t;let p=x(f),m=y(p),h=y(ce()(p)),g={},_=[];a!==!1&&NI(s.root,g,_);function ee(e){let t=pn(e,p,`state`);for(let[n,r]of _){let i=MI(t,r);i!==e.has(n)&&(i?e.add(n):e.remove(n))}}function te(t){let n=(PI(t),t.get(p));if(n===void 0)throw S(Error(PI(t)?`The world holds no ${e.id} machine: add it first, with world.add(${e.id}.trait).`:`Entity ${t} holds no ${e.id} machine: spawn it with the machine's trait.`),[[`SP0229`,`The world holds no %s machine: add it first, with world.add(%s.trait).`],[`SP0230`,`Entity %s holds no %s machine: spawn it with the machine's trait.`]],`states`);return n}function v(e){let t={};for(let n of l)t[n]=e[n];return t}function ne(e){let n=DI(t,e.state);return n&&Math.max(0,OI(n,e)-e.waited)}function re(e){let t={};for(let[n,r]of Object.entries(e.history))t[n]=r.map(e=>s.getStateNodeById(e.id));return s.resolveState({value:e.state,context:v(e),historyValue:t})}function ie(e,t,n=0){let r=te(e),i=re(r),a=s.getTransitionData(i,t);if(a.length===0)return!1;let[o,c]=_I(s,i,t),l,u;for(let e of c){let t=e.exec&&SI.get(e.exec);t?.entered?u=t.wait:t&&(l=t.wait)}let d=t.type===xI,f={...r.paused},m=l||u||d?0:r.waited;if(l&&!d&&(f[l.id]=r.waited),u){let e=u.id;m=a.some(({target:t})=>t?.some(t=>t.type===`history`&&r.history[t.id]?.some(t=>t.id===e)))?f[e]??0:n,delete f[e]}let h={...o.context,state:o.value,waited:m,paused:f,history:jI(o)};PI(e),e.set(p,h),ee(PI(e)?e[b].worldEntity:e);for(let e of c)e.exec?.(e.info,e.params);return!0}function ae(e,n,r){let i=DI(t,e.state);return i!==void 0&&n+r/2>=OI(i,e)}function oe(e){return e.has(FI)?!0:i.some(t=>e.has(t))}function se(e,n){let r=pn(e[b].worldEntity,p,`state`);if(r!==void 0&&DI(t,r)){let t=e.get(p),r=t.waited+n;e.set(p,{waited:r}),ae(t,r,n)&&ie(e,{type:xI})}ZI.length=0,QI=n,dn(e,m,ue);for(let e of ZI)e.isAlive()&&e.has(p)&&ie(e,{type:xI})}function le(e,t,r){for(let i of n)if(MI(e.state,i.path)&&i.test(t,r))return i}function ue([e],n){DI(t,e.state)&&(oe(n)||(e.waited+=QI,ae(e,e.waited,QI)&&ZI.push(n)))}function de(e){let t=e[b].worldEntity;if(t.has(p)&&ee(t),e[b].queryInstances[h.id]?.entities.length!==0)for(let t of e.query(h))ee(t)}function fe(e,t){let n=e.get(p),r=n&&le(n,e[b].worldEntity,e);r&&ie(e,r.event,t),YI.length=0,XI.length=0,$I=e,D(e,m,pe);for(let e=0;e<XI.length;e++){let n=YI[e];n.isAlive()&&n.has(p)&&ie(n,XI[e].event,t)}}function pe([e],t){if(oe(t))return;let n=le(e,t,$I);n&&(YI.push(t),XI.push(n))}let me={name:e.id,description:e.description,ownerOnly:e.ownerOnly??!1,trait:p,stateNames:kI(s.root),is:g,tagNames:new Map(_.map(([t,n])=>[`${e.id}.${n.join(`.`)}`,t])),send:(e,t)=>ie(e,AI(t)),read(e){let t=te(e);return{value:t.state,context:v(t),secondsLeft:ne(t),matches:e=>qN(e,t.state)}},advance(e,t){c&&se(e,t),n.length>0&&fe(e,t)}};II.set(e.id,me),BI.set(p,s.root),_.length>0&&(RI.set(p,ee),zI.push(de));for(let[t,n]of _)UI.set(t,{machine:e.id,path:n});for(let e of LI)e(me);return me}function tL(e,t=``){return typeof e!=`object`||!e?[`${t}${String(e)}`]:Object.entries(e).flatMap(([e,n])=>tL(n,`${t}${e}.`))}function nL(e,t){let{value:n,secondsLeft:r}=e.read(t),i=`${e.name}: ${tL(n).join(`, `)}`;return r===void 0?i:`${i}, ${Math.ceil(r)} s left`}function rL(e){for(let t of zI)t(e)}function iL(e,t){for(let n of II.values())n.advance(e,t)}var aL=new Map;function oL(e,t){let n=e.match(/[A-Za-z0-9]+/g);if(!n)throw S(Error(`The name "${e}" has no letter or digit to name a machine by: name it in words, such as "guard".`),`SP0115`,`toMachineId`);let r=`${n.map((e,t)=>t===0?e.toLowerCase():e[0].toUpperCase()+e.slice(1).toLowerCase()).join(``)}${t}`,i=aL.get(r);if(i!==void 0&&i!==e)throw S(Error(`"${e}" and "${i}" both name the machine "${r}": rename one so its letters and digits differ, such as "${e} 2".`),`SP0116`,`toMachineId`);return aL.set(r,e),r}var sL=[`player`,`npc`],cL=class{name;values;spec={line:``,choices:[],ends:!1,actions:[]};constructor(e,t){this.name=e,this.values=t}say(e){for(let[,t]of e.matchAll(/\{(\w+)\}/g))if(!Object.hasOwn(this.values,t)&&!sL.includes(t))throw S(Error(`The dialog node "${this.name}" reads {${t}}, which the dialog does not declare: add it to dialog({ ... }), or read one of ${[...Object.keys(this.values),...sL].join(`, `)}.`),`SP0108`,`DialogNodeBuilder`);return this.spec.line=e,this}choice(e,t,{when:n}={}){return this.spec.choices.push({text:e,to:t,when:n}),this}do(e){return this.spec.actions.push(e),this}end(){return this.spec.ends=!0,this}},lL=class{name;values;nodes=new Map;constructor(e,t){this.name=e,this.values=t}node(e,t){if(this.nodes.has(e))throw S(Error(`The dialog node "${e}" is declared twice: name each node once.`),`SP0109`,`DialogBuilder`);return this.nodes.set(e,t(new cL(e,this.values)).spec),this}start(e){let t=[...this.nodes.keys()],n=e=>`which no node is named: declare it with .node("${e}", n => ...), or name one of ${t.join(`, `)}.`;if(!this.nodes.has(e))throw S(Error(`The dialog starts on "${e}", ${n(e)}`),`SP0110`,`DialogBuilder`);for(let[e,{choices:t,ends:r}]of this.nodes){for(let{to:r}of t)if(!this.nodes.has(r))throw S(Error(`The dialog node "${e}" goes to "${r}", ${n(r)}`),`SP0111`,`DialogBuilder`);if(t.length>9)throw S(Error(`The dialog node "${e}" has ${t.length} choices, more than the 9 a player can pick: split the node, with a choice that goes on to a node holding the rest.`),`SP0112`,`DialogBuilder`);if(t.length===0&&!r)throw S(Error(`The dialog node "${e}" has no choice and no end(): give it a .choice(text, node), or end it with .end().`),`SP0113`,`DialogBuilder`)}return{name:this.name,values:this.values,nodes:this.nodes,start:e}}},uL=/^\w+$/;function dL(e,t={}){oL(e,`Dialog`);for(let e of Object.keys(t))if(!uL.test(e))throw S(Error(`The dialog value "${e}" has a name a line cannot read: name it with letters, digits and underscores alone, such as "${e.replace(/\W+/g,`_`)||`value`}".`),`SP0114`,`dialog`);return new lL(e,t)}function fL(e,t,n){return e.replace(/\{(\w+)\}/g,(e,r)=>{if(Object.hasOwn(t.values,r)){let e=t.values[r];return String(typeof e==`function`?e(t):e)}return Object.hasOwn(n,r)?n[r]:e})}var pL=`ended`,mL=`continue`;function hL(e){return`choose${e+1}`}var gL=qF({entered:({context:e})=>e.entered+1}),_L=new Map;function vL(e){let t=e,n=oL(t.name,`Dialog`),r=_L.get(n);if(r?.tree===t)return r;let i={};for(let[e,{choices:n,ends:r}]of t.nodes){let t={};n.forEach(({to:e},n)=>{t[hL(n)]=e}),r&&(t[mL]=pL),i[e]={entry:gL,on:t}}i[pL]={};let a={machine:eL({id:n,tags:!1,ownerOnly:!0,initial:t.start,context:{entered:0},states:i}),tree:t};return _L.set(n,a),a}var yL=function(e){return e.Friendly=`friendly`,e.Neutral=`neutral`,e.Hostile=`hostile`,e}({}),bL=function(e){return e.Approached=`APPROACHED`,e.Interacted=`INTERACTED`,e.Stuck=`STUCK`,e}({}),xL=yr(`gaveUp`,()=>({point:0,reason:`timeout`})),SL=C(`npc`,{name:``,title:``,level:1,faction:`friendly`,leash:0,home:()=>new l,routine:``,step:``,entered:-1,stepSeconds:0,legSecondsLeft:0,leg:0,pass:0,pauseLeft:0,walkStep:``,line:``,lineSecondsLeft:0,clip:``,near:!1}),CL=x({compiled:()=>null}),wL={plugin:`npcs`,trait:SL,wiki:`/engine/entities/npc/`,description:`A character a routine drives instead of a player.`,ai:({name:e,title:t,faction:n,routine:r,step:i})=>({is:[e,t&&`a ${t.toLowerCase()}`,n].filter(Boolean).join(`, `),facts:r?[`doing ${r}, at ${i}`]:[`standing`]}),ranges:{level:{min:1,max:100,step:1}},runsOn:k.Server},TL=C(`talking`),EL=x({compiled:()=>null}),DL=C(`conversation`,{npc:``,speaker:``,title:``,node:``,line:``,choices:()=>[],ends:!1,entered:-1},{ownerOnly:!0}),OL=x({machine:()=>null}),kL=function(e){return e[e.End=-1]=`End`,e[e.Continue=0]=`Continue`,e}({}),AL=rs({npc:Zo(64),choice:Yo(-1,9),entered:Yo(-1,2**53-1)},{messagesPerSecond:8}),jL=us(`npcs`,`dialog`,AL),ML=function(e){return e.Saved=`saved`,e.Unsaved=`unsaved`,e.Saving=`saving`,e.Refused=`refused`,e}({}),NL=Sc(x({status:`saved`})),PL={join:[],ready:[],disconnect:[],reconnect:[],leave:[]},FL=new WeakMap;function IL(e,t){FL.set(e,t)}function LL(e){return FL.get(e)??PL}var RL=new WeakMap;function zL(e){let t=RL.get(e);return t||(t=new Set,RL.set(e,t)),t}function BL(e){let{entity:t}=e;Cc(t,t_,{account:e.account,name:e.name,seat:e.seat,role:e.role,avatar:e.avatar}),Cc(t,n_,{state:e.connection,holdEndsTick:e.holdEndsTick}),e.saveStatus!==void 0&&Cc(t,NL,{status:e.saveStatus}),t.has(U)||t.add(U)}function VL(e,t){let n={...t,entity:e.spawn(),connection:Qg.Connected,holdEndsTick:-1};return BL(n),HR(n.entity),zL(e).add(n),n}function HL(e){return YQ(e)?Array.from(zL(e),e=>e.entity):e.query(I(t_)).map(e=>e)}function UL(e,t){for(let n of zL(e))if(n.entity===t)return n}function WL(e){let t=new Set(Array.from(zL(e),({seat:e})=>e)),n=0;for(;t.has(n);)n++;return n}function GL(e){let t=XQ(e,{deltaSeconds:GQ});return t.authoritative?t:KL()}function KL(){throw S(Error(`A player's hooks run on the world that decides outcomes, a room's or a game played alone's, never on a page in a room.`),`SP0443`,void 0)}function qL(e,t){return{authoritative:!0,tick:dr(e),world:e,[qn]:e,[Yn]:t}}function JL(e,t,{returning:n,restore:r,check:i,rethrow:a}){let{join:o,ready:s}=LL(e);YQ(e)||KL();let c=new Set(e.entities);c.delete(t.entity);let l={reaches:e=>!c.has(e),isOpen:!0},u=qL(e,l),d=jr(e),f={returning:n},p=()=>{l.isOpen=!1,er(e,!1)},m=()=>{p();for(let t of[...e.entities])!c.has(t)&&t.isAlive()&&Rc(e,t);Mr(e,d);let t=zL(e);for(let e of[...t])c.has(e.entity)||t.delete(e)},h,g=`onPlayerJoin`;er(e,!0);try{for(let e of o)h=e,e.hook(u,t.entity,f);if(h=void 0,r&&!r())return m(),{ok:!1,refusal:e_.SaveRefused};g=`onPlayerReady`;for(let e of s)h=e,e.hook(u,t.entity);if(h=void 0,g=`check`,i&&!i())return m(),{ok:!1,refusal:e_.SaveRefused}}catch(e){if(m(),a)throw e;return{ok:!1,refusal:e_.HookFaulted,fault:{plugin:h?.plugin??`save`,hook:h||g===`check`?g:`restore`,error:e}}}return p(),aR(e),{ok:!0}}function YL(e,t,n,r){for(let{plugin:i,hook:a}of e)try{n(a)}catch(e){r({plugin:i,hook:t,error:e})}}var XL=new WeakMap;function ZL(e,t,n,r,i){if(t.entity.isAlive()){let i=GL(e),a={reason:n},o=new Set,s=Ic(e);Fc(e,o);try{YL(LL(e).leave,`onPlayerLeave`,e=>e(i,t.entity,a),r)}finally{Fc(e,s)}XL.set(t,o)}return QL(e,t,i)}function QL(e,t,n){if(n&&!n())return!1;let r=XL.get(t);XL.delete(t);for(let t of r??[])t.isAlive()&&Rc(e,t);return zL(e).delete(t),t.entity.isAlive()&&Rc(e,t.entity),!0}var $L=new WeakMap,eR=new WeakMap;function tR(e,t,{message:n}){let r=or(e,`kick`);if(!UL(r,t))return nR(r,`kick() got an entity that is no player of this world: pass a player entity, as onPlayerJoin hands one, or one readPlayers(world) lists.`);let i=$L.get(r);i||(i=[],$L.set(r,i)),!i.some(e=>e.player===t)&&i.push({player:t,message:n})}function nR(e,t){let n=v$(e);if(!n||e.has(j))throw S(Error(t),[[`SP0514`,`kick() got an entity that is no player of this world: pass a player entity, as onPlayerJoin hands one, or one readPlayers(world) lists.`],[`SP0515`,`%s.`]],void 0);n({system:`core.players`,tick:dr(e),streak:1,error:S(Error(t),[[`SP0514`,`kick() got an entity that is no player of this world: pass a player entity, as onPlayerJoin hands one, or one readPlayers(world) lists.`],[`SP0515`,`%s.`]],void 0)})}function rR(e){let t=$L.get(e);if(t&&t.length>0){let n=t.splice(0),r=eR.get(e);if(r)r(n);else for(let{player:t}of n){let n=UL(e,t);n&&ZL(e,n,$g.Kicked,e=>{throw e.error})}}aR(e)}function iR(e){let{entity:t}=e;if(!t.isAlive())return`a player entity was destroyed: only the core destroys one, and kick(step, player, { message }) removes a player`;let n=wc(t,t_);if(!n||n.account!==e.account||n.name!==e.name||n.seat!==e.seat||n.role!==e.role||n.avatar!==e.avatar)return`PlayerTrait on ${e.name}'s player was written or removed: the core writes it at the join, and a game reads it with readTrait`;let r=wc(t,n_);if(!r||r.state!==e.connection||r.holdEndsTick!==e.holdEndsTick)return`ConnectionTrait on ${e.name}'s player was written or removed: the core writes it as her connection changes, and onPlayerDisconnect hears a drop`;if(e.saveStatus!==void 0&&wc(t,NL)?.status!==e.saveStatus)return`PlayerSaveTrait on ${e.name}'s player was written or removed: the room writes it as her save changes, and requestSave(world) asks for a checkpoint`}function aR(e){let t=RL.get(e);if(t)for(let n of t){let t=iR(n);if(t===void 0)continue;nR(e,`${t}.`);let r=!n.entity.isAlive();r&&(n.entity=e.spawn()),BL(n),r&&oR.get(e)?.(n)}}var oR=new WeakMap;function sR(e){RL.delete(e),$L.delete(e)}var cR=function(e){return e.EntityGone=`entity-gone`,e.ControllerLeaving=`controller-leaving`,e.NotControllable=`not-controllable`,e.NotAController=`not-a-controller`,e.ControlledByOther=`controlled-by-other`,e}({}),lR=function(e){return e.Released=`released`,e.HandedOver=`handed-over`,e.EntityDestroyed=`entity-destroyed`,e.ControllerGone=`controller-gone`,e.LevelChanged=`level-changed`,e}({}),uR=new WeakMap;function dR(e,t){uR.set(e,t)}function fR(e,t){let n=gR.get(e)?.get(t);return n?n.controller:ER(e,t)}function pR(e,t,n){let r;for(let i of t)i.isAlive()&&(r=sr(e,i,n));if(r&&Bn(r))throw S(Error(`${n} ran on a page in a room, where control is the room's alone: call it with the room's step, in a system with no runsOn, or a join hook's step.`),`SP0533`,void 0);return r}function mR(e){return e.has(I(t_))||Yt(()=>e.has(ut))}function hR(e,t,n,r){return n.isAlive()?mR(n)?`not-controllable`:t.isAlive()?mR(t)?r.from!==void 0&&fR(e,n)!==r.from?`controlled-by-other`:null:`not-a-controller`:`controller-leaving`:`entity-gone`}var gR=new WeakMap,_R=new WeakMap;function vR(e){let t=gR.get(e);return t||gR.set(e,t=new Map),t}function yR(e,t,n,r){if(!YQ(e))return;let i=_R.get(e);i||_R.set(e,i=[]);let a=bR.get(e);i.push({entity:t,controller:n,reason:a&&r===`entity-destroyed`?a:r})}var bR=new WeakMap;function xR(e){e.has(lt)||e.add(lt);let t=(e.get(lt)?.serial??0)+1;return e.set(lt,{serial:t}),t}function SR(e,t,n,r){let i=wR(e,t,n,r);if(i.ok)return;let a=pR(e,[n,t],`control`),o=`control was refused with ${i.refusal}: ${CR(i.refusal)}. Call tryControl where a refusal is part of the game, such as two players reaching for one seat.`;if(!a||a.has(j))throw S(Error(o),`SP0534`,`control`,n);console.error(o)}function CR(e){switch(e){case`entity-gone`:return`the entity was destroyed`;case`controller-leaving`:return`the controller is destroyed or leaving the room`;case`not-controllable`:return`the entity is a player or a room controller, which controls but is never controlled`;case`not-a-controller`:return`the controller is neither a player nor a room controller: pass a player entity, such as the one onPlayerJoin receives, or one addController made`;case`controlled-by-other`:return`another controller holds the entity, or claimed it this tick, where the call named from`}}function wR(e,t,n,r){let i=pR(e,[n,t],`tryControl`),a=i?hR(i,t,n,r):`entity-gone`;return a===null?i?(vR(i).set(n,{controller:t,simulation:r.simulation,visibility:r.visibility??ct.Everyone,context:r.context?.name??``,viewTarget:r.viewTarget===!0}),{ok:!0}):{ok:!1,refusal:`entity-gone`}:{ok:!1,refusal:a}}function TR(e,t){let n=pR(e,[t],`releaseControl`);if(!n)return;let r=t.get(w);if(!r){gR.get(n)?.delete(t);return}vR(n).set(t,{controller:null,simulation:r.simulation,visibility:ct.Everyone,context:``,viewTarget:!1})}function ER(e,t){let n=t.isAlive()?t.get(w)?.controller??null:null;return n?.isAlive()?n:null}function DR(e,t){return fR(sr(e,t,`findPendingController`),t)}var OR=y(w);function kR(e,t){let n=[];for(let r of e.query(OR))r.get(w)?.controller===t&&n.push(r);return n}function AR(e,t){let n=sr(e,t,`readPendingControlled`),r=gR.get(n),i=kR(n,t).filter(e=>{let n=r?.get(e);return!n||n.controller===t});if(r)for(let[e,n]of r)n.controller===t&&e.isAlive()&&!i.includes(e)&&i.push(e);return i}function jR(e){let t=gR.get(e),n=(t?.size??0)>0||(_R.get(e)?.length??0)>0;if(t&&t.size>0){for(let[n,r]of t)NR(e,n,r);t.clear()}n&&Um(e,MR(e)),PR(e)}function MR(e){let t=[];for(let n of e.query(OR)){let r=n.get(w);if(!r?.context||!r.controller)continue;let i=wc(r.controller,t_);if(!i||i.role===Zg.Bot)continue;let a=Vm(e,r.context);a&&!t.includes(a)&&t.push(a)}return t}function NR(e,t,n){if(!t.isAlive())return;let r=n.controller?.isAlive()?n.controller:null,i=t.get(w);if(n.viewTarget&&r?.has(I(t_))&&(r.has(ft)?r.set(ft,{entity:t}):r.add(ft({entity:t}))),i&&i.controller===r&&i.simulation===n.simulation&&i.visibility===n.visibility&&i.context===n.context)return;let a={controller:r,simulation:n.simulation,serial:xR(e),visibility:n.visibility,context:n.context};i?t.set(w,a):t.add(w(a)),t.has(U)||t.add(U),i?.controller&&i.controller!==r&&(yR(e,t,i.controller,r?`handed-over`:`released`),IR(e,t))}function PR(e){let t=_R.get(e);if(!t||t.length===0)return;let n=t.splice(0),r=uR.get(e)??[];if(r.length===0)return;let i=GL(e);for(let{entity:t,controller:a,reason:o}of n)for(let{plugin:n,hook:s}of r)try{s(i,t,{controller:a,reason:o})}catch(t){let r=v$(e);if(!r||e.has(j))throw t;r({system:`${n}.onControlRelease`,tick:dr(e),streak:1,error:t})}}var FR={buttons:0};function IR(e,t){let n=t.get(U);n&&(n.axes.fill(0),n.vectors.fill(0),n.changes.length=0,t.set(U,FR),oh(t,Rm(e)))}function LR(e,t){let n=t.get(U);if(!n)return;let r=Rm(e);for(let i of e.query(OR))i.get(w)?.controller===t&&(th(i,n),oh(i,r))}function RR(e,{name:t}){return or(e,`addController`).spawn(ut({name:t}),U,dt)}function zR(e,t,{handle:n,value:r}){let i=t.isAlive()?sr(e,t,`writeInput`):or(e,`writeInput`),a=t.isAlive()?t.get(dt):void 0;if(!a){let e=`writeInput(step, controller, { handle: ${n.name} }) got a controller no system writes input for: pass a room controller from addController or a bot player from addBotPlayer, since a player's input comes from her page.`,t=v$(i);if(!t||i.has(j))throw S(Error(e),`SP0554`,`writeInput`);t({system:`core.control`,tick:dr(i),streak:1,error:S(Error(e),`SP0554`,`writeInput`)});return}gh(Rm(i),a,n,r),t.set(dt,{buttons:a.buttons})}var BR={buttons:0};function VR(e){for(let t of e.query(dt)){let n=t.get(dt);n&&t.has(U)&&(th(t,n),n.axes.fill(0),n.vectors.fill(0),t.set(dt,BR),LR(e,t))}}function HR(e){wc(e,t_)?.role===Zg.Bot&&(e.has(dt)||e.add(dt))}Ec((e,t)=>{let n=gR.get(e);n?.delete(t);let r=t.get(w);if(r?.controller?.isAlive()&&yR(e,t,r.controller,`entity-destroyed`),mR(t)){if(n)for(let e of n.values())e.controller===t&&(e.controller=null);for(let n of e.query(OR)){let r=n.get(w);r?.controller===t&&(n.set(w,{controller:null,simulation:r.simulation,serial:xR(e),visibility:ct.Everyone,context:``}),yR(e,n,t,`controller-gone`),IR(e,n))}}});var UR=/^\d{8}-\d{6}-[a-z0-9]{4}(-r\d+)?$/;function WR(e){return UR.test(e)}var GR=null;function KR(e){GR=e}var qR=x(()=>({a:0,b:0,c:0,d:0}));function JR(e){e=e+2654435769|0;let t=e;return t=Math.imul(t^t>>>16,569420461),t=Math.imul(t^t>>>15,1935289751),{seed:e,word:(t^t>>>15)>>>0}}function YR(e){let t=e.a+e.b|0;e.a=e.b^e.b>>>9,e.b=e.c+(e.c<<3)|0,e.c=e.c<<21|e.c>>>11,e.d=e.d+1|0;let n=t+e.d|0;return e.c=e.c+n|0,(n>>>0)/4294967296}var XR=0;function ZR(e,t){let n={a:0,b:0,c:0,d:0},r=JR(t);n.a=r.word,r=JR(r.seed),n.b=r.word,r=JR(r.seed),n.c=r.word,r=JR(r.seed),n.d=r.word;for(let e=0;e<12;e++)YR(n);let i=e.get(qR);i?Object.assign(i,n):e.add(qR(n))}function QR(e){return e.get(qR)||(ZR(e,0),e.get(qR))}function $R(e){return GR?.(e),YR(QR(e))}function ez(e,t,n){return t+$R(e)*(n-t)}function tz(e,t,n){return t+Math.floor($R(e)*(Math.floor(n)-t+1))}function nz(e,t){for(let n=t.length-1;n>0;n--){let r=tz(e,0,n);[t[n],t[r]]=[t[r],t[n]]}return t}function rz({search:e,test:t,draw:n}){let r=new URLSearchParams(e),i=Number.parseInt(r.get(`seed`)??``,10);return Number.isSafeInteger(i)?i:t||r.has(`hold`)||r.has(`profile`)||WR(r.get(`replay`)??``)?0:n()}var iz=()=>!0,az=Symbol(`replaced`);function oz(e){return P(e)&&Object.hasOwn(e,az)}function sz(e){let t={...e};return Object.defineProperty(t,az,{value:!0}),t}function cz(e){return oz(e)?sz(e):{...e}}function lz(e,t){if(!P(t)||oz(t))return t;if(!P(e))return sz(t);let n=cz(e);for(let r in t)n[r]=Object.hasOwn(e,r)?lz(e[r],t[r]):t[r];return n}function uz(e,t,n){if(!P(t)||oz(t))return t;if(!P(e))return sz(t);if(n?.type!==`parallel`){for(let n in t)if(!Object.hasOwn(e,n))return sz(t)}let r=cz(e);for(let i in t)r[i]=Object.hasOwn(e,i)?uz(e[i],t[i],n?.states[i]):t[i];return r}function dz(e,t,n){let r=lz(t,n),i=vQ(e),a=i&&HI(i);return a&&P(r)&&P(t)&&P(n)&&Object.hasOwn(t,`state`)&&Object.hasOwn(n,`state`)&&(r.state=uz(t.state,n.state,a)),r}function fz(e,t,n){return n===null||n===!0?n:t===null?P(n)?sz(n):n:dz(e,t,n)}function pz(e,t){let n={...e};for(let r in t)n[r]=Object.hasOwn(e,r)?fz(r,e[r],t[r]):t[r];return n}function mz(e){return br(e.name)?.delivery!==hr.Cosmetic}function hz(e){return e.gone?e:{...e,gone:!0}}function gz(e,t){for(let n=0;n<e.events.length;n++)e.events[n].entity===t&&(e.events[n]=hz(e.events[n]))}function _z(e,t){for(let n of t)(e.moments||mz(n))&&(e.events.push(n),e.eventBytes+=Fr(n.value));let n=0,r=0;for(;n<e.events.length&&(e.events.length-n>16384||e.eventBytes>8388608);)e.eventBytes-=Fr(e.events[n].value),mz(e.events[n])&&r++,n++;n>0&&e.events.splice(0,n),e.droppedEvents+=r}function vz(e,{moments:t}){let n={changed:{...e.changed},removed:new Set(e.removed),remade:new Set,hash:e.hash,sends:1,moments:t,events:[],droppedEvents:0,eventBytes:0};return e.events&&_z(n,e.events),n}function yz(e,{holds:t=iz}={}){e.moments=!1,e.events=e.events.filter(mz),e.eventBytes=0;for(let t of e.events)e.eventBytes+=Fr(t.value);for(let n of e.removed)delete e.changed[n],e.remade.delete(n),gz(e,n),t(n)||e.removed.delete(n)}function bz(e,t,n){let{holds:r=iz}=n;e.moments&&!n.moments&&yz(e,n);for(let n in t.changed){let r=t.changed[n];if(e.removed.has(n)){e.removed.delete(n),e.remade.add(n),e.changed[n]=r,gz(e,n);continue}let i=Object.hasOwn(e.changed,n)?e.changed[n]:void 0;e.changed[n]=i?pz(i,r):r}for(let n of t.removed){if(e.moments){e.removed.add(n);continue}delete e.changed[n],e.remade.delete(n),gz(e,n),r(n)&&e.removed.add(n)}t.events&&_z(e,t.events),e.hash=t.hash,e.sends++}function xz(e){return e instanceof o||e instanceof l||e instanceof f}function Sz(e){if(!Array.isArray(e))return!1;for(let t of e)if(typeof t!=`number`)return!1;return!0}function Cz(e){if(e===2)return new o;if(e===3)return new l;if(e===4)return new f}function wz(e){return e!==void 0&&typeof e!=`function`}function Tz(e){return xz(e)||P(e)||Array.isArray(e)}function Ez(e){if(xz(e))return e.clone();if(Array.isArray(e))return Tz(e[0])?[Ez(e[0])]:[];if(P(e)){let t={};for(let n in e)Tz(e[n])&&(t[n]=Ez(e[n]));return t}return e}function Dz(e,t,n={}){let{guess:r=!0,whole:i=!1}=n;if(oz(e)&&(t=void 0),Sz(e)){if(xz(t))return t.fromArray(e);let n=r&&t==null?Cz(e.length):void 0;if(n)return n.fromArray(e)}if(Array.isArray(e)){let r=Array.isArray(t)?t[0]:void 0;return e.map(e=>Dz(e,Ez(r),{...n,whole:!0}))}if(P(e)){let r=P(t)?t:{};if(i)for(let t in r)!Object.hasOwn(e,t)&&wz(r[t])&&delete r[t];for(let t in e)r[t]=Dz(e[t],r[t],n);return r}return e}function Oz(e,t){if(!P(e)||!P(t)||oz(e))return Dz(e,void 0);for(let n in e)if(!(n in t))return Dz(e,void 0);for(let n in e)t[n]=Oz(e[n],t[n]);return t}function kz(e,t){let{state:n,...r}=e;return Dz(r,t),`state`in e&&(t.state=Oz(n,t.state)),t}function Az(e,t,n,r){let i=Dz(t,n,{whole:r}),{schema:a}=e;if(r&&P(i)&&P(a)&&P(t))for(let e in a)Object.hasOwn(t,e)||(i[e]=void 0);return i}var jz=new Set;function Mz(e,t,n){if(typeof t!=`string`)return null;let r=e.get(zn),i=r?Lz(r,t):$a(e,t);if(i)return i;let a=`${n} ${t}`;return e.has(j)&&!jz.has(a)&&(jz.add(a),console.warn(`${n} names the entity "${t}", which this world holds none of, so it reads null and the two ends differ on it until it changes. A page holds only the entities the room streams: name an entity with a streamed trait, or one the scene places.`)),null}function Nz(e,t,n){let r=Ke(t),i=r.length>0&&P(n)&&E(e);if(!i)return;let a=yQ(t)??`a trait`;for(let e of r)pr(n,e,(t,n)=>{let r=t[n],o=`${a}.${e}`;if(typeof r==`string`)t[n]=Mz(i,r,o);else if(Array.isArray(r))for(let e=0;e<r.length;e++)typeof r[e]==`string`&&(r[e]=Mz(i,r[e],o))})}function Pz(e,t,n,{partial:r=!1,whole:i=!1}={}){if(P(n)&&oz(n)&&(e.has(t)&&e.remove(t),n={...n}),n===null)e.remove(t);else if(n===!0)e.add(t);else if(e.has(t)){let r=e.get(t),a=VI(t)&&P(n)&&P(r)?kz(n,r):Az(t,n,r,i);Nz(e,t,a),e.set(t,a),qI(e,t)}else{let i=Pn(t),a=r&&VI(t)&&P(n)&&P(i)?kz(n,i):Dz(n,i,{whole:!r});Nz(e,t,a),e.add(t(a))}}function Fz(e){e.has(zn)||e.add(zn);let t=e.get(zn);if(!t)throw S(Error(`The world holds no network entities.`),`SP0167`,void 0);return t}function Iz(e,t,{owns:n,welcome:r=!1}={}){let i=Fz(e),a=new Map;if(`remade`in t)for(let n of t.remade){let t=i.get(n);i.delete(n),a.set(n,t??-1),t?.isAlive()&&Rc(e,t)}for(let n in t.changed)i.get(n)?.isAlive()||i.set(n,r?e.spawn(In({id:n}),Ln):e.spawn(In({id:n})));for(let e in t.changed){let r=i.get(e);r&&Vz(r,t.changed[e],n)}_i(e),`droppedEvents`in t&&t.droppedEvents>0&&Di(e),t.events&&Rz(e,i,t.events,{remade:a});for(let n of t.removed){let t=i.get(n);i.delete(n),t?.isAlive()&&yi(e,t,()=>{t.isAlive()&&Rc(e,t)})}}function Lz(e,t){if(typeof t!=`string`)return;let n=e.get(t);return n?.isAlive()?n:void 0}function Rz(e,t,n,{remade:r}={}){for(let{tick:i,entity:a,gone:o,name:s,value:c}of n){let n=br(s);if(!n)throw S(Error(`No event made as "${s}": the room streams it and this page never made it. Make it with defineEvent("${s}", schema) in a module both the room and the page import.`),`SP0483`,void 0);let l=-1,u=o&&a!==void 0?r?.get(a):void 0;if(u!==void 0)l=u;else if(a!==void 0){let n=Lz(t,a);if(n!==void 0)l=n;else if(!o){Bz(e,s,a);continue}}let d=wr(n);for(let[e,t]of Object.entries(Cr(n)))Array.isArray(d[e])&&d[e].length===0&&(d[e]=[t()]);let f=P(c)?Dz(c,d,{guess:!1,whole:!0}):d;for(let e of Sr(n))pr(f,e,(e,n)=>{if(!(n in e))return;let r=e[n];e[n]=Array.isArray(r)?r.flatMap(e=>e===null?[null]:Lz(t,e)??[]):Lz(t,r)??null});vi(e,{name:s,tick:i,on:l,record:f})}}var zz=new WeakMap;function Bz(e,t,n){let r=`The room streamed ${t} on "${n}", which this page holds no entity for and the room did not mark gone: the page's world has fallen out of step with the room's.`;if(e.has(j))throw S(Error(r),`SP0484`,void 0);let i=(zz.get(e)??0)+1;zz.set(e,i),i===1&&console.error(r)}function Vz(e,t,n){for(let r in t){if(n?.(e,r))continue;let i=vQ(r);if(!i)throw S(Error(`No trait registered as "${r}": the other end streams it and this end never defined it. Define it with defineTrait("${r}", schema) in a module both the room and the page import.`),`SP0169`,void 0,e);Pz(e,i,t[r])}}function Hz(e,t,n={}){let r={};for(let[t,n]of Fz(e))n.isAlive()&&(r[t]=wQ(n));Iz(e,ba({entities:r,hash:0},t),n)}var Uz=new Map;Ze(({name:e,trait:t,predicted:n})=>{n&&Uz.set(e,t)});function Wz(){return[...Uz.keys()].sort()}function Gz(e){return Uz.has(e)}var Kz=new Set([...new Set([`turn`,`character`,`teleport`,`transform`,`velocity`]),`path`,`push`,`speedModifiers`]);function qz(e){return new Set(e.filter(e=>Uz.has(e)).sort())}var Jz=x(()=>({names:new Set}));function Yz(e,t){e.has(Jz)?e.set(Jz,{names:t}):e.add(Jz({names:t}))}function Xz(e,t){let n=e.get(Jz);return!n||n.names.has(t)}function Zz(e){if(!e)return Uz;let t=[];for(let n of e){let e=Uz.get(n);e&&t.push([n,e])}return t}var Qz=.05,$z=1e-4;function eB(e,t,n){if(n instanceof o||n instanceof l||n instanceof f){let r=e[t];e[t]=n.toArray(Array.isArray(r)?r:[]);return}if(typeof n==`function`)return;let r=e[t];if(Array.isArray(n)){let i=Array.isArray(r)?r:[];i.length=n.length;let a=i;for(let e=0;e<n.length;e++)eB(a,String(e),n[e]);e[t]=i;return}if(typeof n!=`object`||!n){e[t]=n;return}let i=P(r)?r:{};for(let e in i)Reflect.get(n,e)===void 0&&delete i[e];for(let e in n){let t=Reflect.get(n,e);t!==void 0&&eB(i,e,t)}e[t]=i}function tB(e,t={},n){if(n)for(let e in t)n.has(e)||delete t[e];for(let[r,i]of Zz(n)){if(!e.has(i)){delete t[r];continue}let n=e.get(i);n===void 0?t[r]=!0:(eB(t,r,n),nB(e,i,t[r]))}return t}function nB(e,t,n){let r=Ke(t),i=r.length>0&&E(e);if(i)for(let e of r)pr(n,e,(e,t)=>{let n=e[t];if(typeof n==`number`)e[t]=Xa(i,n);else if(Array.isArray(n))for(let e=0;e<n.length;e++)typeof n[e]==`number`&&(n[e]=Xa(i,n[e]))})}function rB(e,t){for(let n in e)n in t||delete e[n];for(let n in t)eB(e,n,t[n])}function iB(e,t,n){for(let[r,i]of Zz(n))r in t?Pz(e,i,t[r],{whole:!0}):e.has(i)&&e.remove(i)}function aB(e,t){if(typeof e==`number`)return typeof t==`number`?Number.isFinite(e)&&Number.isFinite(t)?Math.abs(e-t)<=$z:Object.is(e,t):t===null&&!Number.isFinite(e);if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!aB(e[n],t[n]))return!1;return!0}if(P(e)&&P(t)){for(let n in t)if(!(n in e)||!aB(e[n],t[n]))return!1;for(let n in e)if(!(n in t))return!1;return!0}return e===t}function oB(e,t){let n=sB(e.transform,`position`),r=sB(t.transform,`position`);return!Array.isArray(n)||!Array.isArray(r)?1/0:Math.hypot(Number(n[0])-Number(r[0]),Number(n[1])-Number(r[1]),Number(n[2])-Number(r[2]))}function sB(e,t){return P(e)?e[t]:void 0}function cB(e,t){return aB(e,t)?!0:Array.isArray(t)?aB(e,t.map(e=>typeof e==`number`?-e:e)):!1}function lB(e,t,n){return e===void 0&&t===void 0?null:n?aB(sB(e,`scale`),sB(t,`scale`))?null:`transform.scale`:oB({transform:e},{transform:t})>.05?`transform.position`:cB(sB(e,`rotation`),sB(t,`rotation`))?aB(sB(e,`scale`),sB(t,`scale`))?null:`transform.scale`:`transform.rotation`}function uB(e,t){let n=new Set,r=e.get(Tp);if(!r)return n;for(let[e,i]of Zz(t)){let t=Rh(i);for(let i in t)Object.hasOwn(r,t[i])&&n.add(`${e}.${i}`)}return n}var dB=new Set([`character.floorNormal`]);function fB(e,t,{names:n,derived:r}){let i=P(t.attachment)&&t.attachment.parent!=null,a=lB(e.transform,t.transform,i);if(a)return a;for(let[i]of Zz(n)){if(i===`transform`)continue;let n=e[i],a=t[i];if(n===void 0||a===void 0){if(n!==a)return i;continue}if(P(n)&&P(a)){for(let e in a)if(!r?.has(`${i}.${e}`)&&!dB.has(`${i}.${e}`)&&!aB(n[e],a[e]))return`${i}.${e}`;for(let e in n)if(!(e in a))return`${i}.${e}`}else if(!aB(n,a))return i}return null}var pB=C(`cooldowns`,()=>({}),{predicted:!0,anyEntity:!0});function mB(e,{key:t,seconds:n}){if(Ui(E(e),`cooldowns`,`cooldowns.countDown`),!(n>0))throw S(Error(`startCooldown: the cooldown "${t}" has ${n} seconds; pass seconds above 0, or start none`),`SP0077`,`startCooldown`,e);let r=e.get(pB),i=hB(e,t);if(i&&i.left>=n)return;let a={...r,[t]:{seconds:n,left:n}};r?e.set(pB,a):e.add(pB(a))}function hB(e,t){let n=e.get(pB);return n&&Object.hasOwn(n,t)?n[t]:void 0}function gB(e,t){return hB(e,t)}function _B(e,t){return hB(e,t)!==void 0}var vB=y(pB),yB=`cooldowns`;function bB(e,t){let n=e.get(pB);if(!n)return;let r=!1;for(let e in n){let i=n[e],a=i.left-t;a<t/2?delete n[e]:i.left=a,r=!0}r&&e.set(pB,n)}function xB(e,t){let{deltaSeconds:n,rerunEntity:r,authoritative:i}=t,a=i||Xz(e,yB);if(r){a&&bB(r,n);return}if(fn(e,vB))for(let t of e.query(vB))(t.has(w)?a&&!A(t):i)&&bB(t,n)}var SB=/^[a-z][A-Za-z0-9]*$/,CB=`global`;function wB(e){if(e===CB)throw S(Error(`"global" is the abilities' shared cooldown: import globalCooldown to start or read it, or define your own under another name.`),`SP0078`,`defineCooldown`);if(!SB.test(e))throw S(Error(`"${e}" cannot name a cooldown: a name is letters and digits starting with a lower case letter, as "dash" is. The engine keeps names with a colon, such as "ability:dash".`),`SP0079`,`defineCooldown`);return TB(e)}function TB(e){return e}var EB=/^[a-z][A-Za-z0-9]*$/;function DB(e){if(!EB.test(e))throw S(Error(`"${e}" cannot name a reservation: a name is letters and digits starting with a lower case letter, as "strike" is. The engine keeps names with a colon, such as "ability:cast".`),`SP0204`,`defineReservation`);return OB(e)}function OB(e){return e}var kB=C(`reservations`,()=>({}),{predicted:!0,anyEntity:!0}),AB=function(e){return e.Full=`full`,e.Empty=`empty`,e}({}),jB=x(()=>({settings:null})),MB=new Map;function NB(e){return e}var PB=NB(`health`);function FB(e){return e.charAt(0).toUpperCase()+e.slice(1)}function IB(e){return FB(e.replace(/[A-Z]/g,e=>` ${e.toLowerCase()}`))}function LB(e,t){return{...t,regen:t.regen??0,start:t.start??AB.Full,label:t.label??IB(e)}}MB.set(PB,{trait:V,query:y(V),maxStat:up,regenStat:`${PB}Regen`,pauseKey:TB(`regen:${PB}`),behaviour:Cp,settings:LB(PB,{maximum:V.schema.maximum,color:`var(--color-health-fill)`})});function RB(e,t){let n=C(e,{current:0,maximum:0,reserved:0},{predicted:!0,anyEntity:!0,seenByAll:!0}),r={trait:n,query:y(n),maxStat:`max${FB(e)}`,regenStat:`${e}Regen`,pauseKey:TB(`regen:${e}`),behaviour:{trait:n,plugin:`resources`,wiki:`/engine/behaviours/resources/`,description:`The ${e} resource a character fills and spends.`,ranges:{current:{min:0,max:1e3,step:1},maximum:{min:0,max:1e3,step:1},reserved:{min:0,max:1e3,step:1}},runsOn:k.Server},settings:t};return fQ(e,r.behaviour),Lh(r.maxStat,n,`maximum`),r}function zB(e,t){if(e===PB)throw S(Error(`defineResource: "health" is the engine's resource: import healthResource to read or draw it, and set its regeneration with registerHealth(world, { regen }).`),`SP0205`,`defineResource`);if(!/^[a-z][A-Za-z0-9]*$/.test(e))throw S(Error(`defineResource: the resource name "${e}" is not camelCase: name it from a lowercase letter, such as "mana" or "holyPower".`),`SP0206`,`defineResource`);if(!(t.maximum>0)||!Number.isFinite(t.maximum))throw S(Error(`defineResource: "${e}" has a maximum of ${t.maximum}; pass a finite number above 0`),`SP0207`,`defineResource`);let n=LB(e,t),r=MB.get(e);if(r)r.settings=n;else{if(bQ().some(([t])=>t===e))throw S(Error(`defineResource: the resource name "${e}" is taken by another trait the dump writes under it: define the resource under another name.`),`SP0208`,`defineResource`);MB.set(e,RB(e,n))}return NB(e)}function BB(e,t){Hi(e,`resources`);let n=LB(PB,{...VB(PB).settings,...t});return e.has(jB)||e.add(jB),e.set(jB,{settings:n}),()=>{e.get(jB)?.settings===n&&e.set(jB,{settings:null})}}function VB(e){let t=MB.get(e);if(t)return t;throw S(Error(`"${e}" is no resource defineResource made: define it once, at module scope, with defineResource("${e}", { maximum }), and pass the key it returns.`),`SP0520`,void 0)}var HB=new WeakMap;function UB(e,t,n){let r=MB.get(t);if(r)return r;let i=E(e);if(!i)return;i.has(j)&&VB(t);let a=HB.get(i);if(a||HB.set(i,a=new Set),!a.has(t)){a.add(t);let e=Pt();console.error(`${n}: "${t.slice(0,80)}" is no resource defineResource made, so ${e?`the system ${e}`:`this world`} reads it as none: checkCost finds a cost of it short, for a press to refuse with Refusal.NoResource, and reserveCost and changeResource leave it alone. Define it once, at module scope, with defineResource("${t.slice(0,80)}", { maximum }), and pass the key it returns.`)}}function WB(e){return VB(e).trait}function GB(e){return VB(e).behaviour}function KB(e){return VB(e).maxStat}function qB(e,t,n){return n===PB&&e?.get(jB)?.settings||t.settings}function JB(e,t){return qB(e,VB(t),t)}function YB(e){return MB.has(e)}function XB(e,t){let n=MB.get(t);return n&&qB(e,n,t)}function ZB({maximum:e,start:t}){return{current:t===AB.Full?e:t===AB.Empty?0:Math.min(Math.max(t,0),e),maximum:e,reserved:0}}function QB(e,t){if(Hi(E(e),`resources`),t===PB)throw S(Error(`Health is given by <Health maximum> or the CharacterSpawn's health, which a save restores: leave healthResource out of resources and <Resource>.`),`SP0210`,`declareResource`,e);let{trait:n,maxStat:r,settings:i}=VB(t),a=ZB(i);e.has(n)?e.set(n,a):e.add(n(a)),Th(e,{[r]:{base:i.maximum,min:0}})}function $B(e,t){let n=MB.get(t);if(!n)return;let{regenDelaySeconds:r=0}=qB(E(e),n,t);r>0&&mB(e,{key:n.pauseKey,seconds:r})}function eV(e,t){Hi(E(e),`resources`);let{resource:n,amount:r}=t;if(n===PB)throw S(Error(`changeResource got health, which is an outcome: change it with dealDamage or dealHealing, which take the room's authority, such as dealHealing(step, entity, { amount }).`),`SP0211`,`changeResource`,e);let i=UB(e,n,`changeResource`),a=i&&e.get(i.trait);if(!i||!a||r===0)return;let o=Math.max(a.maximum-(a.reserved??0),0);e.set(i.trait,{current:Math.min(Math.max(a.current+r,0),o)}),r<0&&$B(e,n)}function tV(e){return e}function nV(e){return Object.keys(e)}function rV(e,t){if(!t)return;let n=tV(t);for(let t of nV(n)){let r=n[t]??0;if(r<=0)continue;let i=UB(e,t,`checkCost`);if((i?e.get(i.trait)?.current??0:0)<r)return t}}function iV(e,t,n){if(!n)return;let r=tV(n),i=e.get(kB);if(i&&Object.hasOwn(i,t)){if(E(e)?.has(j))throw S(Error(`reserveCost: "${t}" already holds a cost on this entity: commitCost or refundCost it before reserving under it again, or give the second action a reservation of its own.`),`SP0212`,`reserveCost`,e);return}let a;for(let t of nV(r)){let n=r[t]??0,i=UB(e,t,`reserveCost`),o=i&&e.get(i.trait);!i||!o||n<=0||(e.set(i.trait,{current:o.current-n,reserved:(o.reserved??0)+n}),(a??={})[t]=n)}if(!a)return;let o={...i,[t]:a};i?e.set(kB,o):e.add(kB(o))}function aV(e,t){sV(e,t,!1)}function oV(e,t){sV(e,t,!0)}function sV(e,t,n){let r=e.get(kB);if(!r||!Object.hasOwn(r,t))return;let i=r[t];for(let t in i){let r=MB.get(t),a=r&&e.get(r.trait);if(!r||!a)continue;let o=i[t],s=Math.max((a.reserved??0)-o,0);e.set(r.trait,{current:n?Math.min(a.current+o,Math.max(a.maximum-s,0)):a.current,reserved:s}),n||$B(e,NB(t))}let a={...r};delete a[t],e.set(kB,a)}function cV(e,t,n,r=!0){let{world:i,deltaSeconds:a,character:o,authoritative:s}=Q,{name:c,entry:l,regen:u,characters:d}=Q;Q.world=e,Q.deltaSeconds=t,Q.character=n??null,Q.authoritative=r;try{MB.forEach(lV)}finally{Q.world=i,Q.deltaSeconds=a,Q.character=o,Q.authoritative=s,Q.name=c,Q.entry=l,Q.regen=u,Q.characters=d}}var Q={world:null,deltaSeconds:0,character:null,authoritative:!1,name:``,entry:null,regen:0,characters:!1};function lV(e,t){let{world:n,character:r}=Q;if(!n)return;if(Q.name=t,Q.entry=e,Q.regen=qB(n,e,t).regen,Q.characters=t!==PB&&(Q.authoritative||Xz(n,t)),!r){D(n,e.query,dV);return}let i=Q.characters&&r.get(e.trait);i&&dV([i],r)}function uV(e,t){return t!==PB&&e.has(w)?Q.characters&&!A(e):Q.authoritative}function dV([e],t){let{name:n,entry:r,deltaSeconds:i,character:a}=Q;if(!r||!a&&!uV(t,n)||n===PB&&e.current<=0)return;let o=t.get(Tp),s=_B(t,r.pauseKey)?0:o&&Object.hasOwn(o,r.regenStat)?xh(o[r.regenStat]):Q.regen,c=Math.max(e.maximum-(e.reserved??0),0),l=Math.min(c,Math.max(0,e.current+s*i));l!==e.current&&(fV.current=l,t.set(r.trait,fV))}var fV={current:0};function pV(e){let t={};for(let[n,r]of MB){if(n===PB)continue;let i=e.get(r.trait);i&&r.settings.saved!==!1&&(t[n]=i.current+(i.reserved??0))}return t}function mV(e,t){let n=e.get(kB),r;for(let[i,a]of Object.entries(t)){let t=MB.get(i);if(t&&i!==PB&&e.has(t.trait)&&t.settings.saved!==!1&&(e.set(t.trait,{current:a,reserved:0}),n)){r??={...n};for(let e in r){if(!Object.hasOwn(r[e],i))continue;let t={...r[e]};delete t[i],Object.keys(t).length>0?r[e]=t:delete r[e]}}}r&&e.set(kB,r)}var hV=`https://assets.spawnite.com/assets/63965374725f4396e59bbb2d52142ed3dff330ec6cdfea86bbdf20c2c85d8d65.vrma`,gV=`https://assets.spawnite.com/assets/381b587408b325c5ecf011a15dd2259a65a2a1cc9678a13c86e331ddeb4385b8.vrma`,_V=`https://assets.spawnite.com/assets/13e5c2bf5966e0e70991678881127b24ff8117ad33c7eaa7cfa399becfdf06c3.vrma`,vV=`https://assets.spawnite.com/assets/84692fa35a94c74e0e671acd855236f4f5d07fe06c613236ade43da3cb43e01a.vrma`,yV=`https://assets.spawnite.com/assets/f58f833d5ca9411c5c28c0d1c8436f9b9020101e9603cb2a6a65c9794e21eac1.vrma`,bV=`https://assets.spawnite.com/assets/63df0f29d806b6959dede9a2bb2929c73db965dca96df1213ad549b357a8fe66.vrma`,xV=`https://assets.spawnite.com/assets/17a7cd14b94f64871aaa16a2c7c7bb82088488142554434d86d7abd0183f85e0.vrma`,SV={headTurn:{share:.4,yawLimit:40,pitchLimit:10,fadeDegrees:80,response:20},loopFadeS:.15,castAim:{inSeconds:.15,holdSeconds:.15,outSeconds:.15},aim:{response:10,legTurnLimit:_.degToRad(75),backwardMargin:_.degToRad(10),sideStepBand:_.degToRad(30),movingSpeed:.3,pitchLimit:ke.firstPersonMaxPolarAngle-Math.PI/2,spinePitchShare:.5},grip:{thumb:.9,index:.75,middle:.8,ring:.85,little:.9},landTouchSeconds:.25,motions:{[H.Idle]:hV,[H.Run]:vV,[H.TurnLeft]:bV,[H.TurnRight]:xV,[H.Jump]:gV,[H.RunJump]:yV,[H.Land]:_V}},CV=new Set([...Object.values(H),...Object.values(Dp)]),wV=e=>CV.has(e),TV=new Map,EV=new Map;function DV(e,t,{marks:n={}}={}){for(let[t,r]of Object.entries(n))if(!(Number.isFinite(r)&&r>=0))throw S(Error(`registerClip: "${e}" marks ${t} at ${r} s; a mark is seconds from the clip's start, 0 or more`),`SP0034`,`registerClip`);return wV(e)?Ne(EV,e,{url:t,marks:n}):Ne(TV,e,{url:t,marks:n})}function OV(){return[...TV].map(([e,{url:t}])=>[e,t])}function kV(){let e=Object.values(H).map(e=>[e,EV.get(e)?.url??SV.motions[e]]),t=Object.values(Dp).flatMap(e=>{let t=EV.get(e)?.url;return t===void 0?[]:[[e,t]]});return[...e,...t]}function AV(){let e=EV.get(H.Land);return e===void 0?SV.landTouchSeconds:e.marks.touch}function jV(e){return(wV(e)?EV:TV).get(e)?.marks}function MV(e,t){let n=e.get(Qf)?.coins??0,r=E(e)?.get($f)?.total??0;for(let i of t){if(n+=i,r+=i,!Number.isFinite(n))throw S(Error(`addCoins would leave the wallet at ${n}: credit an amount the wallet can hold.`),`SP0045`,void 0,e);if(!Number.isFinite(r))throw S(Error(`addCoins would leave the coins this world has credited at ${r}, which a round scores: credit an amount the count can hold.`),`SP0529`,void 0,e)}}var NV=y(O,w),PV={};function FV(e,t,{accepts:n,level:r}=PV){let i=null;return D(e,NV,([{position:e}],a)=>{if(n&&!n(a))return;let o=r?z(e.x-t.x,e.z-t.z):e.distanceTo(t);(i===null||o<i.distance)&&(i={entity:a,distance:o})}),i}var IV=y(Gf,O),LV=new f,RV={position:new l,rotation:new f};function zV(e,t){dn(e,IV,([n],r)=>{if(A(r))return;let{rotation:i}=jv(e,r,RV);i.premultiply(Tl(n.speed*t,LV)),Mv(e,r,{rotation:i})})}var BV=Math.PI*2,VV=y(Kf,O);function HV(e,t){dn(e,VV,([n],r)=>{if(A(r))return;n.elapsed+=t;let i=n.height*Ws(BV*n.elapsed/n.seconds),{position:a}=jv(e,r,RV);a.y+=i-n.offset,n.offset=i,Mv(e,r,{position:a})})}function UV(e,t,n){let r=FV(e,t);return r&&r.distance<=n?r.entity:null}var WV=y(qf,O);function GV(e){let t=or(e,`collectPickups`);D(t,WV,(n,r)=>{let i=r.get(qf),a=r.get(O)?.position;if(!i||!a)return;let o=UV(t,a,i.radius);o&&(nH(e,o,i.reward),ei(e,Zf,{entity:r}),xy(e,r))})}var KV=y(Jf,O);function qV(e){let t=or(e,`collectLoot`);for(let n of t.query(KV)){let r=n.get(Jf),i=n.get(O)?.position;if(!r||!i)continue;let a=UV(t,i,r.radius);if(!a)continue;let{item:o,count:s,data:c}=r,l=UM(a,c===void 0?{item:o,count:s}:{item:o,count:s,data:c});r.id&&l>0&&(t.has(Yf)||t.add(Yf),t.get(Yf)[r.id]=s-l),l===s?xy(e,n):l>0&&n.set(Jf,{count:s-l})}}var JV=y(ep,O);function YV(e){dn(e,JV,([t,{position:n}],r)=>{if(A(r))return;let i=FV(e,n);t.near=i!==null&&i.distance<=t.radius});for(let{entity:t,payload:n}of Ha(e,rp)){let r=$a(e,n.entity),i=r?.get(ep)?.radius,a=r?.get(O)?.position,o=t.get(O)?.position;if(r&&i!==void 0&&a&&o&&o.distanceTo(a)<=i+1){let n=ir(e,r);n&&ei(n,tp,{by:t},{entity:r})}}}var XV=y(ip,O);function ZV(e){dn(e,XV,([t,{position:n}],r)=>{if(A(r))return;let i=FV(e,n),a=i!==null&&i.distance<=t.radius,o=a===t.inside?null:ir(e,r);o&&Pf(o,e,r,i?.entity??null,a),t.inside=a})}function QV(e,t,{amount:n,source:r=null,weapon:i=null,zone:a=null,data:o=null}){if(sr(e,t,`dealDamage`),Hi(E(t),`behaviours`),t.has(ap))return;let s=t.get(V)?.current??0,c=Math.max(0,s-n);s>0&&c===0&&(t.has(Dj)?t.set(Dj,{source:r}):t.add(Dj({source:r}))),t.set(V,{current:c}),$B(t,PB),t.has(op)?t.set(op,{source:r}):r&&t.add(op({source:r}));let l=t.get(O)?.position;ei(e,cp,{amount:n,source:r,weapon:i,zone:a,data:o,...l&&{at:l}},{entity:t})}function $V(e,t,{amount:n,source:r=null}){if(sr(e,t,`dealHealing`),Hi(E(t),`behaviours`),!(n>=0)||!Number.isFinite(n))throw S(Error(`dealHealing got an amount of ${n}: heal by a finite number from 0, and take health off with dealDamage.`),`SP0046`,`dealHealing`,t);let i=t.get(V);if(!i)throw S(Error(`dealHealing: the entity has no health to heal; give it <Health>, or the CharacterSpawn's health.`),`SP0047`,`dealHealing`,t);t.set(V,{current:Math.min(i.maximum,i.current+n)}),ei(e,lp,{amount:n,source:r},{entity:t})}function eH(e,t){if(!(t>=0)||!Number.isFinite(t))throw S(Error(`${e} got an amount of ${t}: pass a finite number from 0, such as ${e}(step, character, 5).`),`SP0048`,void 0)}var tH=[0];function nH(e,t,n){if(sr(e,t,`addCoins`),eH(`addCoins`,n),tH[0]=n,MV(t,tH),n===0)return;let r=(t.get(Qf)?.coins??0)+n;t.has(Qf)?t.set(Qf,{coins:r}):t.add(Qf({coins:r}));let i=E(t);if(!i)return;let a=rH(i)+n;i.has($f)?i.set($f,{total:a}):i.add($f({total:a}))}function rH(e){return pn(e[b].worldEntity,$f,`total`)??0}function iH(e,t,n){if(sr(e,t,`spendCoins`),eH(`spendCoins`,n),n===0)return!0;let r=t.get(Qf)?.coins??0;return r<n?!1:(t.set(Qf,{coins:r-n}),!0)}var aH=y(V);function oH(e){D(e,aH,([e],t)=>{e.current>e.maximum&&t.set(V,{current:e.maximum})})}Lh(up,V,`maximum`);function sH(e){D(e,aH,([t],n)=>{let r=n.get(Dj)?.source??null;n.has(Dj)&&n.remove(Dj);let i=n.has(w)||n.has(Ip);if(n.has(Oj)){if(n.has(Fp)){i||xy(rr(e),n);return}n.remove(Oj)}t.current>0||(n.has(Fp)||n.add(Fp),n.add(Oj),ei(rr(e),sp,{source:r?.isAlive()?r:null},{entity:n}))})}var cH=new l,lH=y(dp,O,le(Fp));function uH(e){let t=e.query(lH);for(let e=0;e<t.length;e++){let n=t[e].get(O)?.position;if(!n)continue;let r=t[e].get(ji)?.radius??Mi.radius;for(let i=e+1;i<t.length;i++){let e=t[i].get(O)?.position;if(!e)continue;let a=r+(t[i].get(ji)?.radius??Mi.radius);cH.subVectors(n,e),cH.y=0;let o=cH.length();o>=a||(o===0?cH.set(1,0,0):cH.divideScalar(o),cH.multiplyScalar((a-o)/2),n.add(cH),e.sub(cH))}}}var dH=y(dp,le(Sn)),fH=y(dp,le(M)),pH=y(dp);Ec((e,t)=>{D(e,pH,([n],r)=>{if(n.reached!==t||A(r))return;let i=ir(e,r);i&&ei(i,pp,{target:t},{entity:r})})});var mH=y(dp,O,Sn),hH={accepts:null,level:!0};function gH(e){return e.has(Fp)?!1:!hH.accepts||hH.accepts(e)}var _H={accepts:gH,level:!0};function vH(e,t,n){if(!e.isAlive()||!e.has(w)||!gH(e))return!1;let r=e.get(O)?.position;return r!==void 0&&z(r.x-t.x,r.z-t.z)<=n}function yH(e){let t=e.get(Vi);return!t||t.some(e=>e.name===`characters`)}function bH(e){D(e,dH,(e,t)=>{t.add(Sn)}),yH(e)&&D(e,fH,(e,t)=>{t.add(M)}),hH.accepts=e.get(mp)?.accepts,dn(e,mH,([t,{position:n},r],i)=>{let a=i.has(Fp)?void 0:FV(e,n,hH);if(!A(i)){let r=t.reached;if(r&&(!a||!vH(r,n,t.reach))){let t=ir(e,i);t&&ei(t,pp,{target:r},{entity:i}),r=null}if(!r&&a&&a.distance<=t.reach){let o=gH(a.entity)?a:FV(e,n,_H);if(o&&o.distance<=t.reach){r=o.entity;let t=ir(e,i);t&&ei(t,fp,{target:r},{entity:i})}}t.reached=r}let o=a?.entity.get(O)?.position;if(!a||!o||a.distance<=t.reach){r.set(0,0,0);return}r.subVectors(o,n),r.y=0,r.normalize().multiplyScalar(t.speed)}),hH.accepts=null,uH(e)}var xH=function(e){return e.Projectile=`projectile`,e.Area=`area`,e.Chain=`chain`,e}({}),SH=x(()=>new Map),CH=C(`abilities`,()=>[],{ownerOnly:!0}),wH=C(`casting`,{ability:``,target:null,secondsLeft:0,request:0},{predicted:!0,anyEntity:!0,seenByAll:!0,entities:[`target`]}),TH=C(`pendingCast`,{ability:``,target:null,request:0,walks:!1,walkedTo:()=>null,standingSeconds:0},{local:!0,entities:[`target`]}),EH=yr(`castRefused`,()=>({request:0,reason:F.NotHeld,resource:``})),DH=yr(`spellLanded`,()=>({ability:``,at:new l,hit:null}),{entities:[`hit`]}),OH=yr(`spellStruck`,()=>({ability:``,at:new l,from:null}),{entities:[`from`]}),kH=C(`abilityProjectile`,{ability:``}),AH={ability:Zo(64),target:$o({optional:!0}),request:Yo(0,2**31)};function jH(e){return is(AH,{pressesPerSecond:e,refusals:MH})}var MH=Object.values(F),NH=is(AH,{refusals:MH}),PH=us(`abilities`,`cast`,NH),FH=C(`target`,()=>({entity:null,pinned:!1}),{local:!0,entities:[`entity`]}),IH=C(`targetable`,{faction:yL.Hostile});function LH(e,{clip:t,castSeconds:n}){if(t===void 0){if(n===void 0)throw S(Error(`registerAbility: "${e}" has no clip and no castSeconds; give castSeconds, 0 for an instant cast, or a clip registered with a release mark`),`SP0036`,void 0);return n}if(n!==void 0)throw S(Error(`registerAbility: "${e}" gives castSeconds ${n} beside its clip "${t}", whose release mark is the cast time; drop castSeconds, or the clip`),`SP0037`,void 0);let r=jV(t)?.release;if(r===void 0)throw S(Error(`registerAbility: "${e}" casts with clip "${t}", which has no release mark; register the clip with marks: { release: <seconds> } before the ability, reading the seconds off spawnite play timeline`),`SP0038`,void 0);return r}function RH(e,t,n){if(Hi(e,`abilities`),n.cost?.[PB])throw S(Error(`registerAbility: "${t}" costs health, which a cast cannot hold back; deal it to the caster with dealDamage in the ability's effect instead.`),`SP0039`,`registerAbility`);for(let e of Object.keys(n.cost??{})){if(!YB(e))throw S(Error(`registerAbility: "${t}" costs "${e.slice(0,80)}", which is no resource defineResource made: define it once, at module scope, and key the cost by what it returns, cost: { [mana]: 25 }.`),`SP0040`,`registerAbility`);if(e.length>64)throw S(Error(`registerAbility: "${t}" costs the resource "${e.slice(0,80)}", whose name is past 64 characters, the most a refusal names; give the resource a shorter name.`),`SP0041`,`registerAbility`)}let r={...n,castSeconds:LH(t,n)},i=e.get(SH)??new Map;return e.has(SH)||e.add(SH(i)),Ne(i,t,r)}function zH(e,t){return e.get(SH)?.get(t)}function BH(e,t,n){Hi(E(e),`abilities`);let r=[...e.get(CH)??[],...n.map(e=>({ability:e,source:t}))];e.has(CH)?e.set(CH,r):e.add(CH(r))}function VH(e,t){let n=e.get(CH);n?.some(e=>e.source===t)&&e.set(CH,n.filter(e=>e.source!==t))}function HH(e,t){return e.get(CH)?.some(e=>e.ability===t)??!1}function UH(e,t,{min:n,max:r,stat:i}){let a=or(e,`rollAbilityDamage`),o=tz(a,n,r);i&&(o*=1+(Sh(t,i)??0)/100);let s=$R(a)<(Sh(t,`critChance`)??.05);return s&&(o*=Sh(t,`critDamage`)??1.5),{amount:Math.round(o),crit:s}}function WH(e){return e.isAlive()&&!e.has(Fp)&&(e.get(V)?.current??0)>0}function GH(e){let t=E(e);return!!t&&(rh(e)||nh(Rm(t),e.get(U),Ym.jump))}function KH(e){return e.isAlive()&&e.get(IH)?.faction===yL.Hostile&&WH(e)}var qH=new l,JH=new l,YH={ray:new h,range:0,target:null};function XH(e,t,n){return!qj(t,qH)||!qj(n,JH)?!1:(YH.ray.origin.copy(qH),YH.range=YH.ray.direction.subVectors(JH,qH).length(),YH.range===0||(YH.ray.direction.divideScalar(YH.range),YH.target=n,Jj(e,YH)===null))}function ZH(e,t){let n=e.get(O)?.position,r=t.get(O)?.position;return n&&r?n.distanceTo(r):1/0}function QH(e,t,n,{range:r,sight:i=!1,hostile:a=!1}={}){if(!n||n===t||!n.isAlive()||!n.has(IH)||n.has(Fp)||(n.get(V)?.current??1)<=0)return F.NoTarget;if(a&&!KH(n))return F.NotHostile;if(r!==void 0&&ZH(t,n)>r)return F.OutOfRange;if(i&&!XH(e,t,n))return F.NoLineOfSight}function $H(e,t,{ability:n,percent:r,seconds:i}){sr(e,t,`slowCharacter`),eU(t);let a=`slow:${n}`;kh(t,a),Dh(t,Kh,{source:a,more:-r/100,seconds:i})}function eU(e){if(e.get(Tp)?.moveSpeed)return;e.has(Gh)||e.add(Gh);let t=e.get(Gh)?.speed??Vh.speed;Th(e,{[Kh]:{base:t,min:0}})}function tU(e,{caster:t,victim:n,name:r,ability:i,scale:a=1,from:o=t}){sr(e,n,`strikeTarget`);let{amount:s,crit:c}=UH(e,t,i.damage);QV(e,n,{amount:Math.round(s*a),source:t,weapon:r,data:{crit:c}}),i.slow&&$H(e,n,{ability:r,...i.slow}),ei(e,OH,{ability:r,at:n.get(O)?.position??new l,from:o},{entity:n})}var nU=y(IH,O,V);function rU(e,t,n,r=[]){let i=[];for(let a of e.query(nU)){if(a===t||r.includes(a)||!KH(a))continue;let e=ZH(t,a);e<=n&&i.push({entity:a,distance:e})}return i.sort((e,t)=>e.distance-t.distance)}var iU=.15,aU=.9,oU=1,sU=2,cU=.05,lU=new l,uU=new f;function dU(e,t){let n=e.get(Dn),r=e.get(O),i=t.get(O)?.position;if(!n||!r||!i)return;let a=r.position;lU.set(i.x-a.x,0,i.z-a.z),lU.lengthSq()!==0&&(uU.setFromUnitVectors(Qp,lU.normalize()),!(Dl(r.rotation,uU)<cU)&&(sg(n,r.rotation,uU,iU),e.set(Dn,n)))}function fU(e,t,n){return!n||!KH(n)||!WH(e)||e.has(Rp)||!HH(e,t)||GH(e)}function pU(e,t){let n=e.get(TH),r=e.get(W),i=t.get(O)?.position,a=n?.walkedTo;return!n||!r||!a||a.equals(r.destination)?!0:i&&r.destination.distanceTo(i)<=sU?(e.set(TH,{walkedTo:r.destination.clone()}),!0):!n.walks&&r.corners.length>0}function mU(e){let t=e.get(TH),n=e.get(W);t?.walks&&n&&t.walkedTo?.equals(n.destination)&&n.corners.length>0&&e.set(W,{corners:[]}),t&&e.remove(TH)}function hU(e,t){e.has(zn)?t.remove(TH):t.set(TH,{walks:!1})}function gU(e,t,{ability:n,target:r,request:i}){mU(t);let a=zH(e,n);if(a&&a.kind!==xH.Area&&r&&KH(r)){if(ZH(t,r)<=a.range){a.faceTarget!==!1&&dU(t,r);return}a.approach!==!1&&t.add(TH({ability:n,target:r,request:i,walks:!0}))}}var _U=y(TH,W,O),vU=[];function yU(e){vU.length=0;for(let t of e.query(_U))!A(t)&&t.get(TH)?.walks&&vU.push(t);for(let t of vU){let n=t.get(TH),r=t.get(W);if(!n||!r)continue;let i=zH(e,n.ability),a=n.target?.isAlive()?n.target:null;if(!i||i.kind===xH.Area||!a||fU(t,n.ability,a)||!pU(t,a)){mU(t);continue}if(ZH(t,a)<=i.range*.9){r.corners.length>0&&t.set(W,{corners:[]}),e.has(zn)&&i.faceTarget!==!1&&dU(t,a),hU(e,t);continue}if(r.corners.length>0)continue;let o=a.get(O)?.position,s=n.walkedTo;if(!o||s&&s.distanceTo(o)<=oU){hU(e,t);continue}if(S_(e,o,t).refusal){hU(e,t);continue}t.set(TH,{walkedTo:t.get(W)?.destination.clone()??null})}}var bU=function(e){return e.Instant=`instant`,e.Projectile=`projectile`,e}({}),xU=function(e){return e.Damage=`damage`,e.Range=`range`,e.ShotsPerSecond=`shotsPerSecond`,e.Pellets=`pellets`,e.Spread=`spread`,e.Pierce=`pierce`,e.Speed=`speed`,e.ZoneDamage=`zoneDamage`,e}({}),SU=20,CU=x(()=>({damage:0,zoneDamage:1,velocity:new l,metresLeft:0,shooter:null,friendlyFire:!1,weapon:null,data:null,target:null,turnRadians:0}));qe(CU,[`shooter`,`target`]);var wU=yr(`shotJudged`,()=>({shooter:``,weapon:``,origin:[0,0,0],end:[0,0,0],hits:[]}),{scope:gr.World,delivery:hr.Cosmetic}),TU=x(()=>new Map);function EU(e,t,n){Hi(e,`weapons`);let r=e.get(TU)??new Map;return e.has(TU)||e.add(TU(r)),Ne(r,t,{...n})}var DU=C(`heldWeapons`,()=>[]);function OU(e,t){let n=e.get(DU);return n===void 0||n.includes(t)}function kU(e,t){switch(t){case`zoneDamage`:return e.zoneDamage??1;case`pellets`:return e.pellets??1;case`spread`:return e.spread??0;case`pierce`:return e.pierce??0;case`speed`:return e.speed??20;default:return e[t]}}var AU={flat:0,percent:0,more:1};function jU(e,t){if(!Object.hasOwn(e,t))return;let n=e[t];AU.flat+=n.base,vh(AU,n.modifiers)}function MU(e,t,n){let r=kU(e,n),i=e.stats?.[n],a=i===void 0?void 0:t.get(Tp),o=r;if(i!==void 0&&a){if(_h(AU),typeof i==`string`)jU(a,i);else for(let e of i)jU(a,e);o=yh(r,AU)}return n===`pellets`?Math.max(1,Math.round(o)):n===`pierce`?Math.max(0,Math.round(o)):Math.max(0,o)}var NU=C(`firedShots`,()=>({recent:[],credits:{}}),{serverOnly:!0}),PU=x(()=>({step:0,sends:[],count:0,kept:0})),FU=8,IU=C(`latency`,()=>({seconds:0,jitterSeconds:0,lags:[]}),{serverOnly:!0});function LU(e,{origin:t,direction:n,weapon:r,weaponName:i,shooter:a,target:o=null,turnDegrees:s=0,ability:c}){or(e,`launchProjectile`);let l=vy(e,{position:t,traits:[CU({damage:r.damage,zoneDamage:r.zoneDamage??1,velocity:n.clone().multiplyScalar(r.speed??20),metresLeft:r.range,shooter:a,friendlyFire:r.friendlyFire??!1,weapon:i,data:r.data??null,target:o,turnRadians:_.degToRad(s)})]});return r.model&&l.add(On({name:r.model})),c&&l.add(kH({ability:c})),l}var RU={test:{ray:new h,range:0,feet:new l,body:Mi},shooter:null},{test:zU}=RU,BU={ray:zU.ray,range:0,target:null},VU=y(CU,O),HU=new l,UU=new l,WU=new f,GU=new f;function KU(e,t,n){let{target:r}=e;if(!r?.isAlive()||!qj(r,HU)||(HU.sub(t),HU.lengthSq()===0))return;let i=e.velocity.length();UU.copy(e.velocity).divideScalar(i),WU.setFromUnitVectors(UU,HU.normalize()),GU.identity().rotateTowards(WU,e.turnRadians*n),e.velocity.copy(UU.applyQuaternion(GU)).multiplyScalar(i)}var qU=new l;function JU(e,t,{metres:n,hit:r,authority:i,owner:a}){let o=e.get(kH)?.ability,{shooter:s}=t;if(i&&o&&s?.isAlive()){let e=zU.ray.at(n,qU);ei(i,DH,{ability:o,at:e,hit:r},{entity:s}),r?.isAlive()&&ei(i,OH,{ability:o,at:e,from:s},{entity:r})}xy(a,e)}function YU(e){return e.get(IH)?.faction!==yL.Hostile||e.has(Fp)}function XU(e,t){let{deltaSeconds:n}=t;D(e,VU,(r,i)=>{let a=i.get(CU),o=i.get(O)?.position;if(!a||!o||A(i))return;let s=ir(e,i);if(!s)return;let c=a.velocity.length();if(!(c>0)||!Number.isFinite(c)){xy(s,i);return}a.target&&a.turnRadians>0&&KU(a,o,n),zU.ray.origin.copy(o),zU.ray.direction.copy(a.velocity).normalize(),zU.range=Math.min(c*n,a.metresLeft),RU.shooter=a.shooter,RU.friendlyFire=a.friendlyFire,RU.passes=i.has(kH)?YU:void 0;let{target:l,distance:u,zone:d}=tM(e,RU);BU.range=zU.range,BU.target=l;let f=Jj(e,BU)?.distance??1/0;if(l&&u<=f){t.authoritative&&QV(t,l,{amount:Lj(a.damage,d,a.zoneDamage),source:a.shooter,weapon:a.weapon,zone:d?.name??null,data:a.data}),JU(i,a,{metres:u,hit:l,authority:t.authoritative?t:null,owner:s});return}if(f!==1/0){JU(i,a,{metres:f,hit:null,authority:t.authoritative?t:null,owner:s});return}o.addScaledVector(zU.ray.direction,zU.range),a.metresLeft-=zU.range,a.metresLeft<=0&&JU(i,a,{metres:zU.range,hit:null,authority:t.authoritative?t:null,owner:s})})}var ZU=TB(`global`);function QU(e){return TB(`ability:${e}`)}var $U=OB(`ability:cast`),eW=.5,tW=`casting`;function nW(e,t,n,r,i){if(!r||!HH(t,n))return F.NotHeld;if(!WH(t))return F.Downed;if(t.has(wH))return F.Casting;if(_B(t,QU(n))||_B(t,ZU))return F.CoolingDown;if(rV(t,r.cost))return F.NoResource;if(r.kind!==xH.Area)return QH(e,t,i,{hostile:!0,range:r.range,sight:!0})}function rW(e,{request:t,reason:n,settings:r,press:i,authority:a}){let o=n===F.NoResource?rV(e,r?.cost)??``:``;i?.refuse(n,o||void 0),a&&ei(a,EH,{request:t,reason:n,resource:o},{entity:e})}function iW(e){let t=e.get(W);t&&t.corners.length>0&&(t.corners.length=0)}function aW(e,t,n,r){let{ability:i,settings:a,target:o,request:s}=n;if(iV(t,$U,a.cost),o&&a.faceTarget!==!1&&dU(t,o),a.castSeconds<=0){pW(e,t,{ability:i,target:o??null,secondsLeft:0,request:s},r);return}a.rooted!==!1&&iW(t),t.add(wH({ability:i,target:o??null,secondsLeft:a.castSeconds,request:s}))}function oW(e,t){let n=!t.rerunEntity,r=!e.has(Vn);for(let i of Uo(t,PH)){let{entity:a,payload:o}=i,{ability:s,request:c}=o,l=zH(e,s),u=o.target??void 0,d=nW(e,a,s,l,u);if(d===F.OutOfRange&&l?.approach!==!1){if(n&&a.get(TH)?.request!==c){mU(a);let e=r?null:a.get(W)?.destination.clone()??null;a.add(TH({ability:s,target:o.target,request:c,walks:r,walkedTo:e}))}continue}if(n&&mU(a),t.authoritative||l?.predicted!==!1){if(d||!l){rW(a,{request:c,reason:d??F.NotHeld,settings:l,press:i,authority:t.authoritative?t:null});continue}aW(e,a,{ability:s,settings:l,target:u,request:c},t.authoritative?t:null)}}}var sW=y(TH),cW=[];function lW(e,t){let{deltaSeconds:n,rerunEntity:r}=t;if(cW.length=0,r)r.has(TH)&&cW.push(r);else for(let t of e.query(sW))cW.push(t);for(let r of cW){let i=r.get(TH);if(!i)continue;let{ability:a,request:o}=i,s=zH(e,a),c=i.target?.isAlive()?i.target:null;if(!s||!c||fU(r,a,c)||!pU(r,c)){mU(r);continue}let l=nW(e,r,a,s,c);if((r.get(W)?.corners.length??0)>0){if(l||s.rooted!==!1){i.standingSeconds>0&&r.set(TH,{standingSeconds:0});continue}}else if(l===F.OutOfRange){let e=i.standingSeconds+n;if(e<.5-n/2){r.set(TH,{standingSeconds:e});continue}}mU(r),l?rW(r,{request:o,reason:l,settings:s,authority:t}):aW(e,r,{ability:a,settings:s,target:c,request:o},t)}}function uW(e,t){t?oV(e,$U):aV(e,$U),e.has(wH)&&e.remove(wH)}var dW=new l,fW=new l;function pW(e,t,n,r){let i=zH(e,n.ability),a=n.target?.isAlive()?n.target:void 0,o=i&&i.kind!==xH.Area;if(!i||o&&QH(e,t,a,{hostile:!0,sight:!0})){uW(t,!0);return}if(uW(t,!1),mB(t,{key:ZU,seconds:1}),i.cooldownSeconds>0&&mB(t,{key:QU(n.ability),seconds:i.cooldownSeconds}),!r)return;let s=n.ability;if(i.kind===xH.Area){ei(r,DH,{ability:s,at:t.get(O)?.position.clone()??new l,hit:null},{entity:t});for(let{entity:n}of rU(e,t,i.radius))XH(e,t,n)&&tU(r,{caster:t,victim:n,name:s,ability:i});return}if(!a)return;if(i.kind===xH.Chain){let n=[a];tU(r,{caster:t,victim:a,name:s,ability:i});for(let a=1;a<=i.jumps;a++){let o=n[n.length-1],c=rU(e,o,i.jumpRadius,n).find(({entity:t})=>XH(e,o,t));if(!c)break;n.push(c.entity),tU(r,{caster:t,victim:c.entity,name:s,ability:i,scale:i.falloff**a,from:o})}return}if(!qj(t,dW)||!qj(a,fW))return;let{amount:c,crit:u}=UH(r,t,i.damage);LU(r,{origin:dW,direction:fW.sub(dW).normalize(),weapon:{damage:c,range:i.range+5,speed:i.projectile.speed,data:{crit:u}},weaponName:s,shooter:t,target:a,turnDegrees:i.projectile.turnDegrees,ability:s})}var mW=y(wH),hW=[];function gW(e,t){let{deltaSeconds:n,rerunEntity:r,authoritative:i}=t;if(hW.length=0,r)r.has(wH)&&hW.push(r);else for(let t of e.query(mW))(i||!A(t))&&hW.push(t);for(let r of hW){let i=r.get(wH);if(!i)continue;let a=zH(e,i.ability);if(!a||!WH(r)||r.has(Rp)||!HH(r,i.ability)||a.rooted!==!1&&(GH(r)||(r.get(W)?.corners.length??0)>0)){uW(r,!0);continue}let o=i.secondsLeft-n;o<n/2?pW(e,r,i,t.authoritative?t:null):r.set(wH,{secondsLeft:o})}}function _W(e,t){(t.authoritative||Xz(e,tW))&&(oW(e,t),t.authoritative&&lW(e,t),gW(e,t))}var vW=new WeakMap,yW=y(ep,jn),bW=new i,xW=new l;function SW(e){let t=e;for(;t?.visible;)t=t.parent;return t===null}function CW(e,t,n,r=1/0,i=()=>!0){let a,o=r;for(let r of e.query(t)){if(!i(r))continue;let e=r.get(jn)?.object;if(!e||!SW(e)||!n.intersectBox(bW.setFromObject(e),xW))continue;let t=xW.distanceTo(n.origin);t>=o||(o=t,a=r)}return a}function wW(e,t,n=1/0){return CW(e,yW,t,n)}function TW(e,t){let n=t.get(O)?.position;if(n){if(S_(e,n).refusal){vW.delete(e);return}vW.set(e,{target:t,destination:b_(e)?.get(W)?.destination})}}function EW(e,t,n){let r=vW.get(e);if(r?.target!==t)return!1;let i=b_(e),a=i?.get(W);return!a||a.destination!==r.destination||i&&rh(i)||!n&&a.corners.length===0?(vW.delete(e),!1):n?(vW.delete(e),a.corners.length>0&&i?.set(W,{corners:[]}),!0):!1}var DW=function(e){return e.SoftLock=`soft-lock`,e.Tab=`tab`,e}({}),OW={mode:`soft-lock`,range:8,angle:60},kW=x(),AW=new f,jW=new l,MW=new l;function NW(e,t,{range:n,angle:r}){let i=t.get(O)?.position;if(!i)return[];jW.set(0,0,-1).applyQuaternion(t.get(O)?.rotation??AW).setY(0);let a=_.degToRad(r);return rU(e,t,n).filter(({entity:e})=>{let t=e.get(O)?.position;return t?(MW.subVectors(t,i).setY(0),MW.lengthSq()===0||jW.angleTo(MW)<=a):!1}).map(({entity:e})=>e)}function PW(e,t){FW(e,t,!0)}function FW(e,t,n){let r=e.get(FH);r?(r.entity!==t||r.pinned!==n)&&e.set(FH,{entity:t,pinned:n}):e.add(FH({entity:t,pinned:n}))}function IW(e,t,n){let r=t.get(FH);r?.pinned&&r.entity&&KH(r.entity)||FW(t,(n.mode===`soft-lock`?NW(e,t,n)[0]:void 0)??null,!1)}function LW(e,t,n){let r=NW(e,t,n);if(r.length===0)return;let i=t.get(FH)?.entity;PW(t,r[((i?r.indexOf(i):-1)+1)%r.length])}var RW=y(IH,jn);function zW(e,t){let n=e.queryFirst(Rg,jn)?.get(jn)?.object,[r]=n?t.intersectObject(n,!1):[];return CW(e,RW,t.ray,r?.distance,KH)}function BW(e,t,n,r){let i=zH(e,n)?.kind!==xH.Area,a=t.get(FH)?.entity;return{name:PH.name,payload:{ability:n,target:i&&a?.isAlive()?a:null,request:r}}}function VW(e){return!e.has(zn)||Xz(e,`casting`)}var HW=`Try again`,UW={[F.NotHeld]:`You do not know that ability`,[F.Downed]:`You cannot cast while down`,[F.Casting]:`Already casting`,[F.CoolingDown]:`Not ready yet`,[F.NoResource]:`Not enough to cast that`,[F.NoTarget]:`No target`,[F.NotHostile]:`Not a hostile target`,[F.OutOfRange]:`Out of range`,[F.NoLineOfSight]:`Target not in line of sight`};function WW(e,{reason:t,resource:n}){let r=n&&XB(e,n)?.label;return t===F.NoResource&&r?`Not enough ${r.toLowerCase()}`:UW[t]}var GW=function(e){return e.Ready=`ready`,e.Pending=`pending`,e.Casting=`casting`,e}({}),KW=new WeakMap;function qW(e){let t=KW.get(e);t||(t={refusals:new Map,watchers:0},KW.set(e,t));let n=t;n.watchers+=1;let r=!1;return()=>{r||(r=!0,--n.watchers,!(n.watchers>0)&&KW.get(e)===n&&KW.delete(e))}}function JW(e,t){let n=fi(t,EH),r=KW.get(e);if(r)for(let{entity:t,record:i}of n)t&&r.refusals.set(t,{reason:i.reason,request:i.request,text:WW(e,i)})}function YW(e,t){let n=t.get(CH);if(!n)return;let r=t.get(FH)?.entity,i=r?.isAlive()?r:void 0,a=i?ZH(t,i):void 0,o=t.get(wH),s=t.get(TH),c=gB(t,ZU)?.left??0,l=[],u=[];for(let{ability:r}of n){let n=zH(e,r);if(!n){u.includes(r)||u.push(r);continue}if(l.some(e=>e.name===r))continue;let i=n.kind===xH.Area,d=i?n.radius:n.range,f=o?.ability===r;l.push({name:r,label:n.label,kind:n.kind,range:d,cost:n.cost??{},cooldownLeft:Math.max(gB(t,QU(r))?.left??0,c),state:f?`casting`:s?.ability===r?`pending`:`ready`,castSecondsLeft:f?o.secondsLeft:null,inRange:i||a===void 0?null:a<=d})}return{target:i&&a!==void 0?{key:Za(e,i),reach:a,inSight:XH(e,t,i)}:null,abilities:l,unregistered:u,refused:KW.get(e)?.refusals.get(t)??null}}var XW=new WeakMap,ZW=C(`playerCharacter`,{character:null},{serverOnly:!0,entities:[`character`]});function QW(e,t){e.has(ZW)?e.set(ZW,{character:t}):e.add(ZW({character:t}))}function $W(e){let t=e.get(ZW)?.character??null;return t?.isAlive()?t:null}var eG=1.5,tG=8,nG=1;function rG(e,t){let n=e%tG/tG*Math.PI*2;return new l(Math.cos(n)*eG,0,Math.sin(n)*eG).add(t)}function iG(e,t,n=new l){let r=[n.clone(),...Array.from({length:tG},(e,t)=>rG(t,n))],i=e.query(w,O).flatMap(e=>e.get(O)?.position??[]);return r.find(e=>i.every(t=>Math.hypot(t.x-e.x,t.z-e.z)>nG))??rG(t,n)}function aG(e,t){let n=E(t),r=n&&XW.get(n);if(!n||!r)return;let i=wc(t,t_);if(!i)return;let{seat:a,name:o,avatar:s}=i,c=n.get(Yg),l=n.get(Xh),u=l?.respawn??{};pN(u);let d=c&&c.length>0?c[a%c.length].clone():iG(n,a,l?.position),f=p_(n,{position:d,facing:l?.facing??0,health:l?.health??V.schema},l?.props);mN(f,{respawn:u,spawn:d}),l?.stats&&jh(f,l.stats),r.invulnerable&&f.add(ap),f.add(ji(l?.body??Mi),Qf,Op({name:o})),f.set(Pi,l?.controller??Fi);let p=s||l?.avatar;p&&f.add(Ap({name:p}));let{movement:m}=r;f.set(Gh,typeof m==`string`?Uh[m]:Wh(l?.movement??Vh,m)),QW(t,f),SR(e,t,f,{simulation:st.Predicted,context:Zm.walking})}function oG(e,t){$W(t)?.add(Rp)}function sG(e,t){$W(t)?.remove(Rp)}function cG(e,t){let n=$W(t);n&&xy(e,n)}var lG=/^[a-z][A-Za-z0-9]*$/;function uG(e){if(!lG.test(e))throw S(Error(`"${e}" cannot name a speed modifier: a name is letters and digits starting with a lower case letter, as "sprint" is.`),`SP0053`,`defineSpeedModifier`);return e}function dG(e,t,n){if(e.rerunEntity&&e.rerunEntity!==t)throw S(Error(`${n} moved a character on a step of another alone: on a step with step.rerunEntity, move her and no other.`),`SP0054`,void 0);if(!t.has(w))throw S(Error(`${n} moves a player's character, and entity ${t.id()} is not one: move a monster or a prop through its own velocity or transform.`),`SP0055`,void 0)}function fG(e,t,{key:n,more:r,seconds:i}){if(dG(e,t,`addSpeedModifier`),!(r>=-1)||!Number.isFinite(r))throw S(Error(`addSpeedModifier: the modifier "${n}" has more ${r}; pass a finite number of at least -1, which stops her.`),`SP0056`,`addSpeedModifier`);if(i!==void 0&&!(i>0&&Number.isFinite(i)))throw S(Error(`addSpeedModifier: the modifier "${n}" has ${i} seconds; pass a finite number above 0, or leave it out for one that stays until removed.`),`SP0057`,`addSpeedModifier`);let a=i===void 0?{more:r}:{more:r,seconds:i},o=t.get(Np);o?(o[n]=a,t.set(Np,o)):t.add(Np({[n]:a}))}function pG(e,t,n){dG(e,t,`removeSpeedModifier`);let r=t.get(Np);r&&Object.hasOwn(r,n)&&(delete r[n],t.set(Np,r))}function mG(e,t,{velocity:n,seconds:r,endSpeed:i,priority:a=0}){if(dG(e,t,`pushCharacter`),!Number.isFinite(n.x)||!Number.isFinite(n.y)||!Number.isFinite(n.z))throw S(Error(`pushCharacter: the velocity (${n.x}, ${n.y}, ${n.z}) is not finite; pass metres a second along each axis.`),`SP0058`,`pushCharacter`);if(!(r>0&&Number.isFinite(r)))throw S(Error(`pushCharacter: the push has ${r} seconds; pass a finite number above 0.`),`SP0059`,`pushCharacter`);if(i!==void 0&&!(i>=0&&Number.isFinite(i)))throw S(Error(`pushCharacter: the push ends at ${i} m/s; pass a finite speed of at least 0, or leave it out to end at the push's own speed.`),`SP0060`,`pushCharacter`);if(!Number.isFinite(a))throw S(Error(`pushCharacter: the push has priority ${a}; pass a finite number, such as 1 for a knockback over a dash at 0.`),`SP0061`,`pushCharacter`);return kN(t,()=>hG(t,{velocity:n,seconds:r,endSpeed:i,priority:a}))}function hG(e,{velocity:t,seconds:n,endSpeed:r,priority:i}){let a=e.get(Pp);if(a&&a.seconds>0&&a.priority>i)return!1;let{x:o,z:s}=t,c={seconds:n,endSpeed:r??z(o,s),priority:i};a?(a.velocity.set(o,0,s),e.set(Pp,c)):e.add(Pp({...c,velocity:new l(o,0,s)}));let u=e.get(Sn);u&&e.set(Sn,u.set(o,u.y,s));let d=E(e);return d&&t.y>0&&sO(d,e,t.y),!0}var gG=y(Np);function _G(e,t){let{deltaSeconds:n}=t;t.updateEachPredicted(gG,([e])=>{for(let t in e){let{more:r,seconds:i}=e[t];if(i===void 0)continue;let a=i-n;a<n/2?delete e[t]:e[t]={more:r,seconds:a}}})}function vG(){return{isGrounded:!1,wasLanded:!1,floorNormal:new l(0,1,0),standingOn:null,isOnWall:!1,wallNormal:new l,isOnCeiling:!1,isHeadBlocked:!1,hits:[],displacement:new l,realVelocity:new l}}var yG=rw(),bG=new WeakMap;function xG(e){let t=yG.get(e);return t||(t=vG(),yG.set(e,t),bG.set(t,Array.from({length:XT.list.length},ew))),t}var SG=.001,$={stepHeight:0,maxSlopeRadians:0,floorSnapDistance:0,gravity:!0,gravityScale:1,jumpHeight:0,groundFriction:0,height:0,platformOnLeave:Ni.DoNothing,turnWithPlatform:!1,pushes:null};function CG(e,t){$.stepHeight=t?.stepHeight??e.stepHeight,$.maxSlopeRadians=t?.maxSlopeRadians??e.maxSlopeRadians,$.floorSnapDistance=t?.floorSnapDistance??e.floorSnapDistance,$.gravity=t?.gravity??e.gravity,$.gravityScale=t?.gravityScale??e.gravityScale,$.jumpHeight=t?.jumpHeight??e.jumpHeight,$.groundFriction=t?.groundFriction??e.groundFriction,$.height=t?.height??e.height,$.platformOnLeave=t?.platformOnLeave??e.platformOnLeave,$.turnWithPlatform=t?.turnWithPlatform??e.turnWithPlatform,$.pushes=e.pushes}function wG(e,t,n){let{world:r}=e,i=xG(t);if(cw(e,t,`moveCharacter`),JG(n.velocity,`velocity`),n.impulse&&JG(n.impulse,`impulse`),wc(t,el)||t.has(I(il))){let e=wc(t,el)?.bodyType===R.Dynamic;return nw(r,t,e?$C.DynamicMover:$C.NotKinematic,e?`moveCharacter was handed entity ${t.id()}, a dynamic body (dynamic-mover): push a dynamic body with applyImpulse, applyForce or setLinearVelocity.`:`moveCharacter was handed entity ${t.id()}, which has a body of its own (not-kinematic): moveCharacter moves a character's capsule; move a kinematic body with moveAndSlide.`),qG(i),i}if(ow(t))return nw(r,t,$C.SecondMove,`moveCharacter moved entity ${t.id()} a second time in one tick (second-move): a character moves once a tick, so fold the second move into the first with overrides.`),i;e.rerunEntity===void 0&&sA(r),t.has(M)||t.add(M),CG(_D(t),n.overrides);let a=0;$.gravity?Math.abs(n.velocity.y)>SG&&nw(r,t,$C.VerticalVelocity,`moveCharacter was handed a velocity.y of ${n.velocity.y} for entity ${t.id()} while the controller owns her vertical speed (vertical-velocity): set overrides: { gravity: false } to move her up and down yourself, or pass impulse for a launch.`):a=n.velocity.y;let o=A(t)?void 0:nA(r,t);return o?(MG(r,e,t,o,n,a),KG(t,o,i,e.deltaSeconds),i):(GG(t,n,a,e.deltaSeconds),qG(i),i)}var TG=new l,EG=new l,DG={x:0,y:0,z:0},OG={x:0,y:0,z:0},kG,AG=!1,jG=!1;function MG(e,t,n,r,i,a){let o=e.get(N)?.handle,s=n.get(O),c=n.get(M);if(!o||!s||!c)return;let{deltaSeconds:l}=t,u=t.rerunEntity!==void 0;tA(r,$.stepHeight,$.floorSnapDistance,$.maxSlopeRadians),rk(o,n);let d=$.height>0?$.height:NG(n);c.height=cA(o,n,r,d),jG=c.height<d,eA(c,r),VG(o,n,r,c.externalVelocity);let{motion:f}=r;i.impulse&&(i.impulse.y!==0&&(f.fallSpeed+=i.impulse.y,i.impulse.y>0&&(f.grounded=!1,f.floorRead=!1)),c.externalVelocity.x+=i.impulse.x,c.externalVelocity.z+=i.impulse.z),$.gravity||(f.fallSpeed=a,a>0&&f.grounded&&(f.grounded=!1,f.floorRead=!1));let p=n.get(Pp),m=p!==void 0&&p.seconds>0,h=m?p.velocity.x:i.velocity.x,g=m?p.velocity.z:i.velocity.z,_=n.get(Sn);_&&(_.x=h,_.z=g);let ee=c.standingOn;TG.copy(s.position),s.position.x+=(h+c.externalVelocity.x)*l,s.position.z+=(g+c.externalVelocity.z)*l;let te=i.jump===!0&&$.jumpHeight>0,v=Yk(e,{entity:n,deltaSeconds:l,gravity:$.gravity?-U_(e).y*$.gravityScale:0,jumpHeight:te?$.jumpHeight:0,pushes:u?0:ca(e,$.pushes),takesRecord:u,record:u||t.sweep?.entity===n?t.sweep:void 0});if(AG=v?$k(e,c,v,l,te):!1,!$.gravity&&!c.isGrounded&&(c.verticalSpeed=a),EG.copy(s.position),PG(e,c,ee),$.turnWithPlatform?RG(o,n,c.isGrounded?c.standingOn:null):FG.delete(n),c.isGrounded&&zG(c.externalVelocity,l),m&&BG(n,l),i.rotation){let{x:e,y:t,z:n,w:r}=i.rotation;s.rotation.set(e,t,n,r)}n.set(M,c)}function NG(e){return xD(e).height}function PG(e,t,n){let r=t.platformVelocity;if(t.isGrounded){let n=t.standingOn;n&&n.has(I(il))?r.copy(Ov(e,n)):r.set(0,0,0);return}if(!n)return;let i=$.platformOnLeave;if(i!==Ni.DoNothing){t.externalVelocity.x+=r.x,t.externalVelocity.z+=r.z;let e=i===Ni.AddUpwardVelocity?Math.max(r.y,0):r.y;t.verticalSpeed+=e}r.set(0,0,0)}var FG=rw(),IG=new f,LG={x:0,y:0,z:0,w:1};function RG(e,t,n){let r=n?e.bodies.get(n):void 0;if(!n||!r){FG.delete(t);return}let i=r.rotation(LG),a=FG.get(t);if(!a||a.on!==n){FG.set(t,{on:n,facing:new f(i.x,i.y,i.z,i.w)});return}IG.copy(a.facing).invert(),IG.premultiply(a.facing.set(i.x,i.y,i.z,i.w));let o=El(IG);o!==0&&(Tl(o,IG),t.get(O)?.rotation.premultiply(IG),t.get(Dn)?.target.premultiply(IG))}function zG(e,t){if(e.x===0&&e.z===0)return;let n=Math.max(0,1-$.groundFriction*t);e.x*=n,e.z*=n,z(e.x,e.z)<SG&&e.set(0,0,0)}function BG(e,t){let n=e.get(Pp);if(!n)return;let r=n.seconds-t;if(r>=t/2){e.set(Pp,{seconds:r});return}e.set(Pp,{seconds:0});let i=e.get(Sn);if(!i)return;let a=z(i.x,i.z);a<=n.endSpeed||(i.x*=n.endSpeed/a,i.z*=n.endSpeed/a)}function VG(e,t,n,r){let{QueryFilterFlags:i}=B(),{collider:a,rigidBody:o,motion:s}=n,c=t.has(Bp);o.translation(OG);let l=OG.x,u=OG.y,d=OG.z;DG.x=0,DG.y=0,DG.z=0,kG??={world:e.world,shape:a.shape,position:OG,rotation:a.rotation(),groups:0,flags:i.EXCLUDE_FIXED,skin:0,maxDistance:1/0},kG.world=e.world,kG.shape=a.shape,kG.rotation=HG,kG.flags=c?i.EXCLUDE_DYNAMIC|i.EXCLUDE_SENSORS:i.EXCLUDE_FIXED|i.EXCLUDE_DYNAMIC|i.EXCLUDE_SENSORS,kG.groups=a.collisionGroups()&~(HT>>>16),kG.excludeCollider=a,kG.excludeBody=o,UG=s.floor,kG.predicate=WG,kG.skin=T.offset,kG.pushedVelocity=DG,KC(kG);let f=OG.x-l,p=OG.y-u,m=OG.z-d;if(f===0&&p===0&&m===0)return;o.setTranslation(OG,!1),e.world.propagateModifiedBodyPositionsToColliders();let h=t.get(O)?.position;h&&(h.x+=f,h.y+=p,h.z+=m),s.floorRead=!1;let g=z(DG.x,DG.z);if(g===0)return;let _=DG.x/g,ee=DG.z/g,te=r.x*_+r.z*ee;te>=g||(r.x+=_*(g-te),r.z+=ee*(g-te))}var HG={x:0,y:0,z:0,w:1},UG;function WG(e){return e.handle!==UG&&e.shape.type!==B().ShapeType.HeightField}function GG(e,t,n,r){let i=e.get(O)?.position,a=e.get(Sn);if(a&&(a.x=t.velocity.x,a.z=t.velocity.z),i&&!A(e)&&(i.x+=t.velocity.x*r,i.y+=n*r,i.z+=t.velocity.z*r,t.rotation)){let{x:n,y:r,z:i,w:a}=t.rotation;e.get(O)?.rotation.set(n,r,i,a)}}function KG(e,t,n,r){let i=e.get(M);if(!i)return;n.isGrounded=i.isGrounded,n.wasLanded=AG,n.floorNormal.copy(i.floorNormal),n.standingOn=i.standingOn,n.isHeadBlocked=jG,n.displacement.subVectors(EG,TG),n.realVelocity.copy(n.displacement).divideScalar(r),n.isOnWall=!1,n.isOnCeiling=!1,n.wallNormal.set(0,0,0);let a=bG.get(n)??[];n.hits.length=0;for(let e=0;e<XT.count;e++){let r=XT.list[e],i=a[e];i.entity=r.collider?YC(r.collider):null,i.point.set(r.point.x,r.point.y,r.point.z),i.normal.set(r.normal.x,r.normal.y,r.normal.z),i.distance=r.distance,n.hits.push(i),-r.normal.y>=t.climbCosine?n.isOnCeiling=!0:r.normal.y<t.climbCosine&&(n.isOnWall=!0,n.wallNormal.copy(i.normal))}}function qG(e){e.wasLanded=!1,e.isOnWall=!1,e.isOnCeiling=!1,e.isHeadBlocked=!1,e.hits.length=0,e.displacement.set(0,0,0),e.realVelocity.set(0,0,0)}function JG(e,t){if(!Number.isFinite(e.x)||!Number.isFinite(e.y)||!Number.isFinite(e.z))throw S(Error(`moveCharacter: the ${t} (${e.x}, ${e.y}, ${e.z}) is not finite; pass metres a second along each axis.`),`SP0559`,void 0)}var YG={arrivalRadius:Mi.radius},XG=new l,ZG=new f,QG={},$G=y(U,O,W,Mp);function eK(e,{rerunEntity:t}=QG){let{arrivalRadius:n}=YG,r=Rm(e);dn(e,$G,([e,{position:i},{corners:a},o],s)=>{if(A(s)||t&&s!==t)return;if(s.has(Fp)){o.set(0,0),a.length=0;return}let c=nh(r,e,Ym.move);if(o.set(c.x,c.y),c.x!==0||c.y!==0){a.length=0;return}let l=0;for(;a.length>0;){let e=a[0];if(XG.set(e.x-i.x,0,e.z-i.z),l=XG.length(),l>n)break;a.shift()}if(a.length===0)return;let u=s.get(Gh)??Vh,{deceleration:d}=u,f=Jh(s,u.speed),p=Math.sqrt(2*d*l)/f,m=a.length>1?1:Math.min(p,1);XG.normalize().applyQuaternion(Tl(-nh(r,e,Ym.heading),ZG)),o.set(XG.x*m,-XG.z*m)})}var tK={[En.Left]:H.TurnLeft,[En.Right]:H.TurnRight};function nK(e){return e===H.TurnLeft||e===H.TurnRight}var rK=y(U,jp);function iK(e,{rerunEntity:t}={}){let n=Rm(e);dn(e,rK,([e,r],i)=>{if(A(i)||t&&i!==t)return;let a=nh(n,e,Ym.strafe);r.strafe=a,r.pitch=a?Qm(nh(n,e,Ym.pitch)):0})}var aK=y(jp,Dn,Mp,M);function oK(e,t){dn(e,aK,([e,n,r,i],a)=>{let o=r.lengthSq()>0,s=e.state===H.Jump||e.state===H.RunJump;e.landSecondsLeft=Math.max(e.landSecondsLeft-t,0),i.isGrounded?n.turnSecondsLeft>0?e.state=tK[n.side]:o?e.state=H.Run:s?(e.state=H.Land,e.landSecondsLeft=a.get(Up)?.clips.get(H.Land)?.duration??0):(e.state!==H.Land||e.landSecondsLeft===0)&&(e.state=H.Idle):s||(e.state=o?H.RunJump:H.Jump)})}var sK=y(M,O),cK=y(M,O,le(w)),lK=y(ji,O,le(M)),uK=[],dK=[],fK=[],pK=new l;function mK(e,t){uK.push(t)}function hK(e,t){A(t)||fK.push(t)}function gK(e,t){A(t)||fK.push(t)}function _K(e,t){eK(e,t),ug(e,t),iK(e,t),t.authoritative&&!t.rerunEntity&&yK(e,t),uK.length=0,t.updateEachPredicted(sK,mK),oA(e,uK,dK);for(let e of uK)vK(t,e);uK.length=0}function vK(e,t){let n=t.get(Sn);pK.set(n?.x??0,0,n?.z??0),wG(e,t,{velocity:pK,jump:t.has(U)&&ih(t,Ym.jump)&&(t.get(M)?.isGrounded??!0)&&!t.has(Fp)})}function yK(e,t){fK.length=0,D(e,lK,hK);for(let e of fK)e.add(M);fK.length=0,D(e,cK,gK),oA(e,fK,dK);for(let n of fK){let r=n.get(dp);if(r&&!r.walks&&Kk(e,n,t.deltaSeconds))continue;let i=n.get(Sn);pK.set(i?.x??0,0,i?.z??0),wG(t,n,{velocity:pK})}fK.length=0}function bK(e){return`equip:${e}`}function xK({slot:e},t){return e===`ring`?t[vM.Ring1]&&!t[vM.Ring2]?vM.Ring2:vM.Ring1:e}function SK(e,t,n){let r=bK(t),{equip:i}=AM(n.item),a=n.data?.modifiers??i?.modifiers??{};for(let[t,n]of Object.entries(a))Dh(e,t,{...n,source:r});i?.abilities&&BH(e,r,i.abilities)}function CK(e,t){let n=bK(t);kh(e,n),VH(e,n)}function wK(e,t){Hi(E(e),`inventory`);let n=[...e.get(bM)??[]],r=n[t],i=e.get(xM),a=r&&AM(r.item).equip;if(!r||!i||!a)return!1;if(jM(e,{action:wM.Equip,slot:t}))return!0;let o=xK(a,i);return n[t]=i[o]??null,e.set(bM,n),e.set(xM,{...i,[o]:r}),CK(e,o),SK(e,o,r),!0}function TK(e,t){let n=e.get(xM),r=n?.[t],i=[...e.get(bM)??[]],a=i.indexOf(null);if(!n||!r||a<0)return!1;if(jM(e,{action:wM.Unequip,slot:t}))return!0;i[a]=r;let o={...n};return delete o[t],e.set(bM,i),e.set(xM,o),CK(e,t),!0}function EK(e,{item:t,count:n}){return kM(t)?!0:(cr(e,`Dropped ${n} of "${t}" from the save: no item is registered by that name. Register it again with registerItem("${t}", definition) to keep it, or leave it dropped if the game removed it on purpose.`),!1)}function DK(e,t){let n=t.map(t=>t&&EK(e,t)?t:null);e.has(bM)?e.set(bM,n):e.add(bM(n))}function OK(e,t){let n={};for(let r of Object.values(vM)){CK(e,r);let i=t[r];i&&EK(e,i)&&(n[r]=i,SK(e,r,i))}e.has(xM)?e.set(xM,n):e.add(xM(n))}var kK=new Set([Xf]);function AK(e){return kK.add(e),()=>{kK.delete(e)}}function jK(e,t){Hi(E(e),`inventory`);let{slot:n,target:r}=t,i=r?.get(In)?.id;if(jM(e,{action:wM.Use,slot:n,target:i}))return;let a={slot:n,target:r,item:e.get(bM)?.[n]?.item},o=e.get(SM);o?o.push(a):e.add(SM([a]))}function MK(e,t){let n=AM(t).tags??[];return e.split(` `).every(e=>e===``||n.includes(e))}function NK(e,t){for(let n of kK){if(n===Xf&&e.get(Xf)?.open)continue;let r=e.get(n);if(r&&MK(r.accepts,t))return!0}return!1}var PK={[yM.Heal]:V,[yM.Coins]:Qf},FK=[];function IK({authority:e,entity:t,item:n,effects:r}){FK.length=0;for(let e of r)e.type===yM.Coins&&FK.push(e.amount);MV(t,FK);let i=`use:${n}`;r.some(({type:e})=>e===yM.Modify)&&kh(t,i);for(let n of r)switch(n.type){case yM.Heal:t.has(V)&&$V(e,t,{amount:n.amount,source:t});break;case yM.Modify:{let{stat:e,flat:r,percent:a,more:o,seconds:s}=n;Dh(t,e,{source:i,flat:r,percent:a,more:o,seconds:s});break}case yM.Coins:nH(e,t,n.amount)}}function LK(e){return TB(AM(e).use?.cooldownGroup??`item:${e}`)}function RK({authority:e,entity:t,activation:{slot:n,target:r,item:i}}){let a=t.get(bM),o=a?.[n];if(!a||!o||o.item!==i)return;let{use:s}=AM(o.item),c=LK(o.item);if(_B(t,c))return;let l=s?.effects??[],u=r!==void 0&&r.isAlive()&&NK(r,o.item);if(!u&&l.length===0)return;if(IK({authority:e,entity:t,item:o.item,effects:l}),u){let t=r.get(Xf);t&&!t.open&&MK(t.accepts,o.item)&&r.set(Xf,{open:!0}),ei(e,CM,{item:o.item},{entity:r})}if(s?.consume){let e=[...a];e[n]=RM(o,1),t.set(bM,e)}let d=s?.cooldownSeconds;d&&kN(t,()=>mB(t,{key:c,seconds:d}))}var zK=y(SM);function BK(e){if(e.has(zn))return;let t=rr(e);for(let n of e.query(zK)){let e=n.get(SM)??[];n.remove(SM);for(let r of e)RK({authority:t,entity:n,activation:r})}}var VK=30,HK=x(()=>({steps:0,position:new l,rotation:new f})),UK=x(),WK=y(I(il),O);function GK(e){D(e,WK,([e,{position:t,rotation:n}],r)=>{if(r.get(I(el))?.bodyType!==R.Kinematic)return;let i=r.get(HK);if(!i){r.add(HK);let e=r.get(HK);e?.position.copy(t),n&&e?.rotation.copy(n);return}if(!i.position.equals(t)||n&&!i.rotation.equals(n)){i.position.copy(t),n&&i.rotation.copy(n),i.steps=0,r.has(UK)&&r.remove(UK);return}i.steps>=VK||(i.steps+=1,i.steps===VK&&r.add(UK))})}var KK=new d;function qK(e){return ga(Math.min(Math.max(e,-xa),xa),2)}function JK(e){let t=e.get(I(el))?.collisionMask,n=e.get(I(il))?.colliders.filter(({trigger:e,collisionMask:n})=>!e&&ua(n??t,ea.npcs)),r=e.get(O);if(!n||!r)return null;let{position:i,rotation:a,scale:o}=r,s=new f(ga(a.x,3),ga(a.y,3),ga(a.z,3),ga(a.w,3)).normalize();return{entity:e,colliders:n,position:new l(qK(i.x),qK(i.y),qK(i.z)),rotation:s,scale:new l(ga(o.x,3),ga(o.y,3),ga(o.z,3))}}function YK(e,t){let n=Math.min(e.length,t.length);for(let r=0;r<n;r++)if(e[r]!==t[r])return e[r]-t[r];return e.length-t.length}function XK(e,t){let n=YK([e.position.x,e.position.z,e.position.y],[t.position.x,t.position.z,t.position.y]);if(n!==0)return n;let r=JSON.stringify(e.colliders),i=JSON.stringify(t.colliders);return r===i?YK(e.rotation.toArray(),t.rotation.toArray())||YK(e.scale.toArray(),t.scale.toArray())||YK(e.entity.get(Ri)?.points??[],t.entity.get(Ri)?.points??[]):r<i?-1:1}var ZK=8,QK=3;function $K(e,t){let n=[new l(0,t/2+e,0),new l(0,-t/2-e,0)];for(let r=0;r<QK;r++){let i=r/QK*(Math.PI/2),a=e*Gs(i),o=e*Ws(i);for(let e=0;e<ZK;e++){let r=e/ZK*Math.PI*2,i=a*Ws(r),s=a*Gs(r);for(let e of[1,-1])n.push(new l(i,e*(t/2+o),s))}}return new Ee(n)}function eq(e,t,n){let r=[];for(let i=0;i<ZK;i++){let a=i/ZK*Math.PI*2;r.push(new l(e*Ws(a),-n/2,e*Gs(a))),t>0&&r.push(new l(t*Ws(a),n/2,t*Gs(a)))}return t===0&&r.push(new l(0,n/2,0)),new Ee(r)}function tq(e,t){let n=new u;return n.setAttribute(`position`,new g(Array.from(e),3)),n.setIndex(t),n}function nq(e){let{rows:t,columns:n,heights:r,size:i}=e,a=[];for(let e=0;e<t;e++)for(let o=0;o<n;o++)a.push((o/(n-1)-.5)*i[0],r[e*n+o],(e/(t-1)-.5)*i[1]);let o=[];for(let e=0;e+1<t;e++)for(let t=0;t+1<n;t++){let r=e*n+t;o.push(r,r+n,r+1,r+1,r+n,r+n+1)}return tq(a,o)}function rq(e,t){switch(t.type){case L.TriangleMesh:return[{geometry:tq(t.vertices,[...t.indices]),isSolid:!1}];case L.Heightfield:return[{geometry:nq(t),isSolid:!1}];case L.Voxels:return t.cells.map(([e,n,r])=>({geometry:new c(t.size,t.size,t.size).translate((e+.5)*t.size,(n+.5)*t.size,(r+.5)*t.size),isSolid:!0}));default:{let n=iq(e,t);return n?[{geometry:n,isSolid:!0}]:[]}}}function iq(e,t){switch(t.type){case L.Box:return new c(...t.size);case L.Sphere:return $K(t.radius,0);case L.Capsule:return $K(t.radius,Math.max(0,t.height-t.radius*2));case L.Cylinder:return eq(t.radius,t.radius,t.height);case L.Cone:return eq(t.radius,0,t.height);case L.ConvexHull:{let n=t.points?Float32Array.from(t.points):e.get(Ri)?.points;if(n&&!nu())throw S(Error(`Await loadRapier as well as loadRecast before baking a navmesh with a hull collider: Rapier decides which body a hull's points build.`),`SP0096`,void 0,e);let r=n&&yu(n);if(!r)return null;let i=[];for(let e=0;e<r.length;e+=3)i.push(new l(r[e],r[e+1],r[e+2]));return new Ee(i)}default:return null}}var aq=new d,oq=new f,sq=new l,cq=new l(1,1,1);function lq({entity:e,colliders:t}){let n=[];for(let{shape:r,offset:i,rotation:a}of t)for(let{geometry:t,isSolid:o}of rq(e,r)){let e=t.index?t.toNonIndexed():t;e.applyMatrix4(aq.compose(sq.fromArray(i),oq.fromArray(a),cq));for(let t of Object.keys(e.attributes))t!==`position`&&e.deleteAttribute(t);n.push({geometry:e,isSolid:o}),e!==t&&t.dispose()}return n}var uq=Mi.height/2;function dq(e,t){return YK([e.y,e.x,e.z],[t.y,t.x,t.z])<0}function fq(e){let t=1/0,n=-1/0;for(let r=1;r<e.length;r+=3)t=Math.min(t,e[r]),n=Math.max(n,e[r]);let r=[],i=[new l,new l,new l];for(let a=t+uq;a<n;a+=uq){let t=new Map;for(let n=0;n<e.length;n+=9){i.forEach((t,r)=>t.fromArray(e,n+r*3));for(let e=0;e<3;e++){let n=i[e],r=i[(e+1)%3];if(dq(r,n)&&([n,r]=[r,n]),n.y>=a||r.y<a)continue;let o=n.clone().lerp(r,(a-n.y)/(r.y-n.y));o.y=a,t.set(`${o.x},${o.z}`,o)}}let n=[...t.values()],o=0,s=0;for(let{x:e,z:t}of n)o+=e/n.length,s+=t/n.length;let c=({x:e,z:t})=>t>s||t===s&&e>o?0:1;n.sort((e,t)=>c(e)-c(t)||(t.x-o)*(e.z-s)-(e.x-o)*(t.z-s));for(let e=1;e+1<n.length;e++)r.push(...n[0].toArray(),...n[e].toArray(),...n[e+1].toArray())}return r}function pq(e,t){let n=e.get(I(il)),r=e.get(I(el)),i=r?.bodyType??R.Fixed,a=i===R.Fixed||i===R.Kinematic&&e.has(UK);if(!n||!a||!n.colliders.some(({trigger:e,collisionMask:t})=>!e&&ua(t??r?.collisionMask,ea.npcs)))return!1;let o=e.get(Bg)?.ground;return o&&o!==t?!1:!n.colliders.some(({shape:e})=>e.type===L.ConvexHull&&!e.points)||!!e.get(Ri)?.points?.length}function mq(e,t,n){n.clear();let r=[];for(let i of e.query(I(il),O)){if(!pq(i,t))continue;n.add(i);let e=JK(i);if(!e)continue;let{colliders:a,position:o,rotation:s,scale:c}=e;r.push([i,...o.toArray(),...s.toArray(),...c.toArray(),JSON.stringify(a),JSON.stringify(i.get(I(el))?.collisionMask??null)].join(`:`))}return r.join(`,`)}function hq(e,t){let n=[];for(let r of e.query(I(il),O)){if(!pq(r,t))continue;let e=JK(r);e&&n.push(e)}n.sort(XK);let r=[];for(let e of n)for(let{geometry:t,isSolid:n}of lq(e)){t.applyMatrix4(KK.compose(e.position,e.rotation,e.scale));let i=t.getAttribute(`position`).array,a=new u;a.setAttribute(`position`,new g(n?[...i,...fq(i)]:[...i],3)),r.push(a),t.dispose()}if(r.length===0)return null;let i=De(r);for(let e of r)e.dispose();if(!i)throw S(Error(`The collider parts do not merge`),`SP0097`,void 0);return i}function gq(e){let t=Object.keys(e);for(let e of t)if(/^\d+$/.test(e))throw S(Error(`The route point "${e}" is named by a number, which puts it first whatever its place: name it with a word, such as "well".`),`SP0117`,`route`);return{names:t,points:t.map(t=>e[t])}}var _q=class{spec={steps:[],end:{kind:`repeat`},on:{}};walk(e,{repeat:t=0,yoyo:n=!1,pause:r=0}={}){return this.add({kind:`walk`,route:e,repeat:t,yoyo:n,pause:r})}wait(e){return this.add({kind:`wait`,seconds:e})}play(e){return this.add({kind:`play`,clip:e})}say(e){return this.add({kind:`say`,line:e})}turn(e){return this.add({kind:`turn`,degrees:e})}face(){return this.add({kind:`face`})}then(e){return this.spec.end={kind:`then`,name:e},this}resume(){return this.spec.end={kind:`resume`},this}on(e,t){return this.spec.on[e]=t,this}add(e){return this.spec.steps.push(e),this}},vq=class{name;routines=new Map;events={};constructor(e){this.name=e}routine(e,t){if(this.routines.has(e))throw S(Error(`The routine "${e}" is declared twice: name each routine once.`),`SP0118`,`RoutinesBuilder`);let{spec:n}=t(new _q);if(n.steps.length===0)throw S(Error(`The routine "${e}" has no steps: give it at least one, such as .wait(5).`),`SP0119`,`RoutinesBuilder`);return this.routines.set(e,n),this}on(e,t){return this.events[e]=t,this}start(e){let t={name:this.name,routines:this.routines,on:this.events,start:e};for(let e of xq(t))if(!this.routines.has(e))throw S(Error(`No routine is named "${e}": declare it with .routine("${e}", r => ...), or name one of ${[...this.routines.keys()].join(`, `)}.`),`SP0120`,`RoutinesBuilder`);let n=bq(t);for(let[e,t]of this.routines)if(n.has(e)&&t.end.kind===`repeat`&&(t.end={kind:`resume`}),!n.has(e)&&t.end.kind===`resume`)throw S(Error(`The routine "${e}" ends in resume(), which goes back to the routine an event interrupted, and no event starts "${e}": end it with .then("<routine>"), or start it with .on(event, "${e}").`),`SP0121`,`RoutinesBuilder`);return t}};function yq(e){return oL(e,`Routines`),new vq(e)}function bq(e){let t=new Set(Object.values(e.on));for(let{on:n}of e.routines.values())for(let e of Object.values(n))t.add(e);return t}function xq(e){let t=[e.start,...Object.values(e.on)];for(let{end:n,on:r}of e.routines.values())n.kind===`then`&&t.push(n.name),t.push(...Object.values(r));return t}function Sq(e){switch(e.kind){case`walk`:{let{route:t,repeat:n,yoyo:r}=e;return`walk ${typeof t==`string`?t:`names`in t?t.names.join(` to `):`${t.length} points`}${n===1/0?` for ever`:n>0?` ${n+1} times`:``}${r?`, there and back`:``}`}case`wait`:return typeof e.seconds==`number`?`wait ${e.seconds} s`:`wait ${e.seconds.between.join(` to `)} s`;case`play`:return`play ${e.clip}`;case`say`:return`say "${e.line}"`;case`turn`:return`turn ${e.degrees}°`;case`face`:return`face the nearest player`}}function Cq({routines:e,on:t}){let n=[...e].map(([e,{steps:t,end:n}])=>{let r=n.kind===`then`?`then ${n.name}`:n.kind===`resume`?`then resume`:`then repeat`;return`${e}: ${[...t.map(Sq),r].join(`, `)}`});for(let[e,r]of Object.entries(t))n.push(`on ${e.toLowerCase()}: ${r}`);return n}var wq=`routines`,Tq=`resumed`,Eq=qF({entered:({context:e})=>e.entered+1});function Dq(e,t){return typeof e==`number`?e:({context:e})=>e[t]}var Oq=new Map;function kq(e){let t=oL(e.name,`Routines`),n=Oq.get(t);if(n?.built===e)return n;let r=bq(e),i=e=>r.has(e)?`#${t}.${e}`:`#${t}.${wq}.${e}`,a=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[e,i(t)])),o=new Map,s={entered:0},c=new Map,l={},u={};for(let[n,d]of e.routines){let e=d.steps.map((e,t)=>`${e.kind}${t+1}`),f=d.end.kind===`then`?i(d.end.name):d.end.kind===`resume`?`#${t}.${wq}.${Tq}`:{target:e[0],reenter:!0},p={};d.steps.forEach((t,r)=>{let i=r+1<e.length?e[r+1]:f,a=`${n}.${e[r]}`;o.set(a,t);let l=`roll${c.size+1}`;t.kind===`wait`&&typeof t.seconds!=`number`&&(c.set(a,l),s[l]=t.seconds.between[0]),p[e[r]]=t.kind===`wait`?{entry:Eq,wait:{seconds:Dq(t.seconds,l),then:i}}:{entry:Eq,on:{[t.kind===`walk`?`ARRIVED`:`DONE`]:i}}});let m={initial:e[0],states:p,on:a(d.on)};r.has(n)?u[n]=m:l[n]=m}let d=Object.keys(l);if(d.length===0)throw S(Error(`Every routine is one an event starts: declare one that runs between events, and start there.`),`SP0122`,void 0);let f={[wq]:{initial:r.has(e.start)?d[0]:e.start,states:{...l,[Tq]:{type:yI.History,history:bI.Deep}},on:a(e.on)},...u},p={machine:eL({id:t,heldBy:[TL],tags:!1,initial:r.has(e.start)?e.start:wq,context:s,states:f}),steps:o,rolls:c,built:e};return Oq.set(t,p),p}var Aq=Object.values(H);function jq(e,t){Hi(e,`npcs`);let{name:n,title:r=``,level:i=1,faction:a=yL.Friendly,position:o,facing:s=0,routines:c,leash:l=0,avatar:u=``}=t,d=f_(e,{position:o,facing:s});if(u&&d.add(Ap({name:u})),d.add(xn({context:k.Server}),SL({name:n,title:r,level:i,faction:a,leash:l,home:o.clone()})),c){let t=kq(c);d.add(CL({compiled:t}),t.machine.trait),Iq(e,d,t)}return d}var Mq=new Set;function Nq(e,t){Mq.has(t)||cr(e,t)&&Mq.add(t)}function Pq(e,t,n,r){let i=e.queryFirst(Rg)?.get(Rg)?.surface,{route:a,pause:o}=n,s,c=[];if(typeof a!=`string`)({points:s,names:c=[]}=`names`in a?a:{points:a});else if(i&&Object.hasOwn(i.map.paths,a))s=i.map.paths[a].points;else return Nq(t,`${Fq(t)}'s routine ${r} walks the map path "${a}", which the map does not hold, so the walk is skipped: name one of the map's paths, or list the points.`),null;if(typeof o!=`number`){for(let e of Object.keys(o))if(!c.includes(e))return Nq(t,`${Fq(t)}'s routine ${r} pauses at "${e}", which its route has no point of, so the walk is skipped: ${c.length>0?`name one of ${c.join(`, `)}`:`give a route() of named points, or pause by seconds at every point`}.`),null}return{points:s.map(e=>{if(e.length===3)return new l(...e);let[t,n]=e;return new l(t,i?.getHeightAt({x:t,z:n})??0,n)}),pauses:s.map((e,t)=>typeof o==`number`?o:o[c[t]]??0)}}function Fq(e){return e.get(SL)?.name||`NPC ${e.id()}`}function Iq(e,t,{steps:n}){let r=t.get(SL);if(!r?.leash)return;let{leash:i,home:a}=r;for(let[r,o]of n){if(o.kind!==`walk`)continue;let n=Pq(e,t,o,r.split(`.`)[0]);for(let e of n?.points??[])e.distanceTo(a)>i&&Nq(t,`${Fq(t)}'s routine ${r} walks to (${e.x}, ${e.z}), past its leash of ${i} m: the walk skips it. Move the point, or lengthen the leash.`)}}var Lq=y(SL,CL,O,W),Rq=y(Rg),zq,Bq=0,Vq=new Set;function Hq(e,t){let n=fi(t,tp);if(fn(e,Lq)){Vq.size>0&&Vq.clear();for(let{entity:e}of n)e&&Vq.add(e);zq=e,Bq=t.deltaSeconds,D(e,Lq,Uq)}}function Uq([e,{compiled:t}],n){let r=zq,i=Bq;if(A(n)||n.has(FI)||n.has(TL)||!t)return;let{machine:a}=t,o=pn(n,ep,`near`)??!1;o&&!e.near&&a.send(n,bL.Approached),Vq.has(n)&&a.send(n,bL.Interacted),e.near=o,e.lineSecondsLeft>0&&(e.lineSecondsLeft-=i,e.lineSecondsLeft<=0&&(e.line=``));for(let a=0;a<=t.steps.size&&Gq(r,n,e,t,i);a++)i=0;n.set(SL,e)}var Wq=new WeakMap;function Gq(e,t,n,{machine:r,steps:i,rolls:a},o){let s=pn(t,r.trait,`state`),c=Wq.get(s);if(!c){let[e]=tL(s),t=e.split(`.`),n=t.at(-2)??``,r=t.at(-1)??``;c={path:e,key:`${n}.${r}`,routine:n,step:r},Wq.set(s,c)}let{path:l,key:u}=c,d=i.get(u);if(!d)return!1;let f=pn(t,r.trait,`entered`)??0,p=f!==n.entered;switch(p?(n.entered=f,n.routine=c.routine,n.step=c.step,n.stepSeconds=0,d.kind!==`walk`&&t.set(W,{corners:[]}),d.kind!==`play`&&(n.clip=``)):n.stepSeconds+=o,d.kind){case`wait`:return p&&typeof d.seconds!=`number`&&Kq(e,t,r,a.get(u)??``,d.seconds.between),!1;case`say`:return n.line=d.line,n.lineSecondsLeft=4,r.send(t,`DONE`);case`turn`:return tJ(t,d.degrees*Math.PI/180),r.send(t,`DONE`);case`face`:return rJ(e,t),r.send(t,`DONE`);case`play`:return p&&(n.clip=d.clip,!Aq.includes(d.clip))?(Nq(t,`${n.name} plays "${d.clip}", a clip its avatar lacks, so the step is skipped: play one of ${Aq.join(`, `)}.`),n.clip=``,r.send(t,`DONE`)):n.stepSeconds<2?!1:(n.clip=``,r.send(t,`DONE`));case`walk`:return Jq(e,t,n,l,d,p,o)}}function Kq(e,t,n,r,[i,a]){t.get(n.trait)?.waited===0&&t.set(n.trait,{[r]:ez(e,i,a)})}var qq=new WeakMap;function Jq(e,t,n,r,i,a,o){let s=fn(e,Rq),c=s&&pn(s,Rg,`surface`),l=qq.get(i);if(!l||l.surface!==c){let r=Pq(e,t,i,n.routine);l=r?{...r,surface:c}:void 0,l&&qq.set(i,l)}let u=t.get(O)?.position;if(!u||!l||l.points.length===0)return eJ(t,n);let{points:d,pauses:f}=l;if(n.leash>0&&u.distanceTo(n.home)>n.leash)return Nq(t,`${n.name} walked past its leash of ${n.leash} m in ${r}: the walk ends and it walks home. Move the path's points within the leash, or lengthen it.`),Yq(e,t,n,n.home),eJ(t,n);if(a&&n.walkStep!==r)return n.walkStep=r,n.leg=0,n.pass=0,n.pauseLeft=0,Xq(e,t,n,r,i,d);if(a&&n.leg>=d.length)return eJ(t,n);if(a)return Xq(e,t,n,r,i,d);if(n.pauseLeft>0)return n.pauseLeft-=o,n.pauseLeft>0?!1:Zq(e,t,n,r,i,d);if((t.get(W)?.corners.length??0)>0)return n.legSecondsLeft-=o,n.legSecondsLeft>0?!1:(t.add(Bp),Nq(t,`${n.name} gave up on point ${n.leg} of ${r}, stuck for longer than the walk there should take: the point is skipped. Clear what blocks the way to it, or move it onto open navmesh.`),t.set(W,{corners:[]}),Qq(t,n,i,d.length,`timeout`)?!0:n.leg>=d.length?eJ(t,n):Xq(e,t,n,r,i,d));t.remove(Bp);let p=f[n.leg]??0;return p>0?(n.pauseLeft=p,!1):Zq(e,t,n,r,i,d)}function Yq(e,t,n,r){return n.legSecondsLeft=(t.get(O)?.position.distanceTo(r)??0)/Vh.speed*2+2,S_(e,r,t).refusal}function Xq(e,t,n,r,i,a){for(let o=0;o<a.length;o++){let o=a[n.leg];if(n.leash>0&&o.distanceTo(n.home)>n.leash){if(!$q(n,i,a.length))return eJ(t,n);continue}let s=Yq(e,t,n,o);if(!s)return!1;if(Nq(t,`${n.name}'s ${r} walks to (${o.x.toFixed(1)}, ${o.z.toFixed(1)}), which walkTo refused (${s}): the point is skipped. Move it onto the walkable ground.`),Qq(t,n,i,a.length,`noRoute`))return!0;if(n.leg>=a.length)return eJ(t,n)}return eJ(t,n)}function Zq(e,t,n,r,i,a){return $q(n,i,a.length)?Xq(e,t,n,r,i,a):eJ(t,n)}function Qq(e,t,n,r,i){let a=ir(zq,e);return a&&ei(a,xL,{point:t.leg,reason:i},{entity:e}),$q(t,n,r)||(t.leg=r),(e.get(CL)?.compiled?.machine)?.send(e,bL.Stuck)??!1}function $q(e,t,n){e.pauseLeft=0;let r=t.yoyo&&e.pass%2==1?-1:1,i=e.leg+r;return i>=0&&i<n?(e.leg=i,!0):e.pass>=t.repeat?!1:(e.pass+=1,e.leg=t.yoyo?Math.min(Math.max(e.leg-r,0),n-1):0,!0)}function eJ(e,t){return t.walkStep=``,(e.get(CL)?.compiled?.machine)?.send(e,`ARRIVED`)??!1}function tJ(e,t){let n=e.get(O)?.rotation;n&&(Tl(El(n)+t,n),e.get(Dn)?.target.copy(n))}var nJ=new l;function rJ(e,t){let n=t.get(O)?.position,r=n&&FV(e,n);r&&iJ(t,r.entity)}function iJ(e,t){let n=e.get(O),r=t.get(O)?.position;n&&r&&(nJ.subVectors(r,n.position),Tl(Math.atan2(nJ.x,nJ.z),n.rotation),e.get(Dn)?.target.copy(n.rotation))}var aJ=y(EL),oJ=y(DL),sJ=y(TL),cJ=[],lJ=new Set;function uJ(e,t){let n=e.get(O)?.position,r=t.get(O)?.position,i=e.get(ep)?.radius;return n!==void 0&&r!==void 0&&i!==void 0&&r.distanceTo(n)<=i+1}function dJ(e,t,n){let r=t.get(EL)?.compiled,i=t.get(SL);if(!r||!i||n.has(DL))return;let{machine:a}=r;n.remove(a.trait),n.add(DL({npc:Za(e,t),speaker:i.name,title:i.title}),OL({machine:a}),a.trait),t.add(TL),t.set(SL,{line:``,lineSecondsLeft:0})}function fJ(e){let t;return n=>{if(!t){let n=new Map;D(e,aJ,(t,r)=>{n.set(Za(e,r),r)}),t=n}return t.get(n)}}function pJ(e){let t=e.get(OL)?.machine;t&&e.remove(t.trait),e.remove(DL,OL)}function mJ(e,t){let n=new Set;for(let{entity:r,payload:i}of Ha(e,jL)){let a=r.get(DL);if(!a||a.npc!==i.npc)continue;let o=t(a.npc),s=o?.get(EL)?.compiled;if(!o||!s||!uJ(o,r)||!r.has(s.machine.trait))continue;let c=i.choice;if(c===kL.End){pJ(r);continue}if(n.has(r)||i.entered!==a.entered)continue;let{machine:l,tree:u}=s;if(c===kL.Continue){if(!a.ends)continue;l.send(r,mL)}else{let t=u.nodes.get(a.node)?.choices[c-1],n={world:e,player:r,npc:o,values:u.values};if(!a.choices.some(e=>e.pick===c)||!t||t.when&&!t.when(n))continue;l.send(r,hL(c-1))}n.add(r)}}function hJ(e,t,n){let r=t.get(DL),i=r&&n(r.npc),a=i?.get(EL)?.compiled;if(!r||!i||!a||!t.has(a.machine.trait)||!uJ(i,t)||t.has(Rp)){pJ(t);return}let{machine:o,tree:s}=a,{value:c,context:l}=o.read(t);if(c===`ended`){pJ(t);return}if(lJ.add(i),iJ(i,t),(i.get(W)?.corners.length??0)>0&&i.set(W,{corners:[]}),l.entered===r.entered)return;let u=s.nodes.get(c);if(!u)return;let d={world:e,player:t,npc:i,values:s.values};for(let e of u.actions)e(d);t.set(DL,{node:c,line:fL(u.line,d,{player:t.get(Op)?.name||`traveller`,npc:r.speaker}),choices:u.choices.flatMap(({text:e,when:t},n)=>!t||t(d)?[{text:e,pick:n+1}]:[]),ends:u.ends,entered:l.entered})}function gJ(e,t){let n=fi(t,tp);if(!(n.length===0&&!fn(e,oJ)&&!fn(e,sJ)&&Ha(e).length===0||e.has(zn)))try{for(let{entity:t,record:r}of n){if(!t||A(t)||!t.has(EL))continue;let n=t.get(O)?.position,i=r.by??(n&&FV(e,n)?.entity);i&&uJ(t,i)&&dJ(e,t,i)}let t=fJ(e);mJ(e,t),cJ.length=0,D(e,oJ,(e,t)=>{cJ.push(t)});for(let n of cJ)hJ(e,n,t);cJ.length=0,D(e,sJ,(e,t)=>{lJ.has(t)||cJ.push(t)});for(let e of cJ)e.remove(TL),e.has(SL)&&e.set(SL,{entered:-1})}finally{cJ.length=0,lJ.clear()}}function _J(){return{position:new l,tangent:new l,right:new l,up:new l,halfWidth:0}}var vJ=.5,yJ=8;function bJ(e,t){let[n,r,i,a]=t,o=t=>{let o=(i[t]-n[t])/2,s=(a[t]-r[t])/2,c=2*r[t]-2*i[t]+o+s,l=-3*r[t]+3*i[t]-2*o-s;return((c*e+l)*e+o)*e+r[t]};return new l(o(`x`),o(`y`),o(`z`))}function xJ(e){let t=[],n=[0],r=e.length-1;for(let i=0;i<r;i++){let a=[i-1,i,i+1,i+2].map(t=>e[_.clamp(t,0,r)]),[,o,s]=a,c=z(s.x-o.x,s.y-o.y,s.z-o.z),l=Math.max(8,Math.ceil(c/vJ*8));for(let e=i===0?0:1;e<=l;e++){let n=e/l,r=bJ(n,a),i=t.at(-1);t.push({point:r,width:_.lerp(o.width??yJ,s.width??yJ,n),distance:i?i.distance+i.point.distanceTo(r):0})}n.push(t[t.length-1].distance)}return{walked:t,passed:n}}var SJ=class{#e=[];#t;#n;#r={track:this,distance:0,lateral:0};constructor(e,{friction:t}={}){if(this.#n=t,e.length<2)throw S(Error(`A track needs two points.`),`SP0233`,`Track`);let{walked:n,passed:r}=xJ(e),i=n[n.length-1].distance,a=Math.max(1,Math.round(i/vJ)),o=0;for(let e=0;e<=a;e++){let t=e/a*i;for(;o<n.length-2&&n[o+1].distance<t;)o++;let r=n[o],s=n[o+1],c=_.inverseLerp(r.distance,s.distance,t);this.#e.push({position:r.point.clone().lerp(s.point,_.clamp(c,0,1)),halfWidth:_.lerp(r.width,s.width,c)/2,tangent:new l,right:new l,up:new l,distance:0})}let s=e[0],c=e[e.length-1];this.#e[0].position.set(s.x,s.y,s.z),this.#e[a].position.set(c.x,c.y,c.z),this.#e.forEach((e,t,n)=>{let r=n[Math.max(0,t-1)],i=n[Math.min(a,t+1)];e.tangent.subVectors(i.position,r.position).normalize(),e.right.crossVectors(e.tangent,Xp).normalize(),e.up.crossVectors(e.right,e.tangent),e.distance=r.distance+r.position.distanceTo(e.position)}),this.#t=e.map((e,t)=>({distance:r[t]/i*this.length,zone:e.zone}))}get length(){return this.#e[this.#e.length-1].distance}frameAt(e,t=_J()){let n=this.#e,r=_.clamp(e,0,this.length),i=0,a=n.length-2;for(;i<a;){let e=i+a+1>>1;n[e].distance<=r?i=e:a=e-1}let o=n[i],s=n[i+1],c=_.inverseLerp(o.distance,s.distance,r);return t.position.lerpVectors(o.position,s.position,c),t.tangent.lerpVectors(o.tangent,s.tangent,c).normalize(),t.right.lerpVectors(o.right,s.right,c).normalize(),t.up.lerpVectors(o.up,s.up,c).normalize(),t.halfWidth=_.lerp(o.halfWidth,s.halfWidth,c),t}pointAt(e,t){let{position:n,right:r}=this.frameAt(e);return n.addScaledVector(r,t)}zoneWeight(e,t){let n=this.#t,r=1;for(;r<n.length-1&&n[r].distance<=e;)r++;let i=n[r-1],a=n[r],o=_.clamp(_.inverseLerp(i.distance,a.distance,e),0,1);return _.lerp(+(i.zone===t),+(a.zone===t),o)}frictionAt(e,t){return this.#n?(this.#r.distance=e,this.#r.lateral=t,this.#n(this.#r)):0}locate(e){let t=this.#e[0],n=1/0;for(let r of this.#e){let i=r.position.distanceToSquared(e);i<n&&(t=r,n=i)}let r=new l().subVectors(e,t.position);return{distance:_.clamp(t.distance+r.dot(t.tangent),0,this.length),lateral:r.dot(t.right)}}},CJ=C(`trackMover`,{distance:0,lateral:0,height:0,speed:0,lateralSpeed:0,verticalSpeed:0,airSeconds:0,enabled:!0,steer:0,throttle:0,jump:!1,sideSpeed:3.5,sideAcceleration:5.5,sideResponse:10,jumpHeight:1,gravity:T.gravity,fallScale:2,drag:.004,friction:0,rideHeight:.5});function wJ(e,t){Hi(E(e),`tracks`),e.set(CJ,{speed:t,enabled:!0})}var TJ=x({track:()=>null}),EJ=_J();function DJ(e,t,n){let r=n?.frameAt(e,EJ).halfWidth??1/0;return Math.abs(t)<=r/3?`in the middle of the lane`:t<0?`left of the lane`:`right of the lane`}var OJ={plugin:`tracks`,trait:CJ,wiki:`/engine/behaviours/track-mover/`,description:`Rides an entity along a track, steered and jumping.`,ai:({height:e,distance:t,lateral:n,enabled:r},{entity:i})=>({facts:[e>0?`in the air`:`on the ground`,DJ(t,n,i.get(TJ)?.track)],actions:r?e>0?[`steer left`,`steer right`]:[`steer left`,`steer right`,`jump`]:[]}),ranges:{sideSpeed:{min:0,max:10,step:.1},sideAcceleration:{min:0,max:20,step:.1},sideResponse:{min:0,max:30,step:.5},jumpHeight:{min:0,max:5,step:.1},gravity:{min:0,max:30,step:.1},fallScale:{min:1,max:4,step:.1},drag:{min:0,max:.02,step:.001},friction:{min:0,max:2,step:.01}},runsOn:k.Client},kJ=C(`trackTrigger`,{start:0,end:0,left:-1/0,right:1/0,bottom:-1/0,top:1/0,lap:!1,inside:!1}),AJ=C(`trackTriggerMovers`,{inside:()=>[],entered:()=>[]},{entities:[`entered`,`inside`]}),jJ={plugin:`tracks`,trait:kJ,wiki:`/engine/behaviours/track-trigger/`,description:`Reports a track mover entering and leaving a region.`,runsOn:k.Client};function MJ({mover:e,frame:t,surfaceFriction:n,deltaSeconds:r}){let i=_.clamp(e.steer,-1,1);e.lateralSpeed=i===0?_.lerp(e.lateralSpeed,0,1-xc(-e.sideResponse*r)):_.clamp(e.lateralSpeed+i*e.sideAcceleration*r,-e.sideSpeed,e.sideSpeed),e.lateral+=e.lateralSpeed*r;let a=e.height<=0;e.airSeconds=a?0:e.airSeconds+r;let o=e.gravity*e.fallScale;e.jump&&a&&(e.verticalSpeed=Math.sqrt(2*o*e.jumpHeight)),(e.verticalSpeed!==0||!a)&&(e.verticalSpeed-=o*r,e.height+=e.verticalSpeed*r,e.height<=0&&(e.height=0,e.verticalSpeed=0)),a&&(e.speed-=e.gravity*t.tangent.y*r,e.speed-=(e.friction+n)*e.speed*r),e.speed-=e.drag*e.speed*e.speed*r,e.speed=Math.max(0,e.speed),e.distance+=e.speed*r}var NJ=y(CJ,TJ,O),PJ=_J(),FJ=new d,IJ=new l,LJ={position:new l,rotation:new f};function RJ(e,t){dn(e,NJ,([n,{track:r}],i)=>{r&&!A(i)&&(n.enabled&&(r.frameAt(n.distance,PJ),MJ({mover:n,frame:PJ,surfaceFriction:r.frictionAt(n.distance,n.lateral),deltaSeconds:t})),n.jump=!1,n.distance>=r.length&&(n.speed=0),n.distance=_.clamp(n.distance,0,r.length),r.frameAt(n.distance,PJ),Math.abs(n.lateral)>PJ.halfWidth&&(n.lateral=Math.sign(n.lateral)*PJ.halfWidth,n.lateralSpeed=0),LJ.position.copy(PJ.position).addScaledVector(PJ.right,n.lateral),LJ.position.y+=n.rideHeight+n.height,FJ.makeBasis(PJ.right,PJ.up,IJ.copy(PJ.tangent).negate()),LJ.rotation.setFromRotationMatrix(FJ),Mv(e,i,LJ))})}var zJ=y(CJ,TJ),BJ=y(kJ,le(AJ)),VJ=y(AJ,le(kJ)),HJ=y(kJ,AJ,TJ),UJ=[];function WJ(e,t){let{deltaSeconds:n}=t;if(D(e,BJ,(e,t)=>{A(t)||t.add(AJ)}),D(e,VJ,(e,t)=>{t.remove(AJ)}),!fn(e,HJ))return;let r=e.query(zJ);e.query(HJ).updateEach(([i,a,{track:o}],s)=>{if(A(s))return;let c=!1,l=!1;UJ.length=0,a.entered.length=0;for(let e of r){let t=e.get(CJ);if(!t||e.get(TJ)?.track!==o||t.lateral<i.left||t.lateral>i.right||t.height<i.bottom||t.height>i.top)continue;let r=t.distance-(t.enabled?t.speed*n:0);t.distance>=i.start&&t.distance<=i.end&&(c=!0,UJ.push(e)),r<=i.end&&t.distance>=i.start&&(l=!0,a.inside.includes(e)||a.entered.push(e))}let u=l&&!i.inside,d=(i.inside||u)&&!c,f=t.authoritative?t:null;f&&u&&Pf(f,e,s,a.entered[0]??null,!0),f&&d&&Pf(f,e,s,a.inside.at(-1)??a.entered[0]??null,!1),a.inside.length=0,a.inside.push(...UJ),i.inside=c})}var GJ={[pe.Tree]:5,[pe.Bush]:3,[pe.Rock]:7,[pe.Tuft]:2},KJ=1.5,qJ=3,JJ=2,YJ=2,XJ=.5,ZJ=.45,QJ=.9,$J=.05,eY=4,tY=.5,nY=Math.PI*2,rY=Object.values(pe).map((e,t)=>({family:e,familyIndex:t,kinds:Object.values(me).filter(t=>fe[t].family===e)}));function iY(e,t=1){let{map:n,size:r}=e,i=Object.values(n.regions),a=r/2-n.rim-YJ,o=[],s=Math.round(r/n.cell);for(let{family:r,familyIndex:c,kinds:u}of rY){let d=GJ[r],f=r===pe.Tree?qJ:KJ,p=Math.floor(a*2/d),m=e.terrain?.scatter?.[r],h=m&&xe(m,s),g=(t,n)=>{let r=h?.[be(e,[t,n])];return r===void 0||Number.isNaN(r)?1:r},ee=h?.some(e=>e>1)?[0,1]:[0],te=new Set(e.terrain?.erased?.[r]?.map(e=>e.join(` `)));for(let s of ee)for(let m=0;m<p;m++)for(let h=0;h<p;h++){let p=[c,m,h],ee=s===0?[]:[s],v=e=>ma(n.seed,...p,e,...ee),ne=-a+(h+v(0))*d,re=-a+(m+v(1))*d,ie={x:ne,z:re};if(te.size>0&&te.has(`${ne} ${re}`))continue;let ae=g(ne,re),oe=s===0?Math.min(ae,1):ae-1;if(oe<=0||e.getPathDistanceAt(ie)<f||i.some(({center:e,scatter:t})=>t.clearing>0&&z(ne-e[0],re-e[1])<t.clearing+JJ))continue;let y=u.map(e=>n.scatter[e]),se=n.scatter.seedOffset;e.getRegionWeightsAt(ie).forEach((e,t)=>{let{scatter:n}=i[t];u.forEach((t,r)=>{y[r]=_.lerp(y[r],n[t],e)}),e>tY&&(se=n.seedOffset)});let ce=y.reduce((e,t)=>e+t,0);if(ce<=0)continue;let le=e.getSlopeAt(ie);if(r===pe.Tree&&le>XJ)continue;let b=_.smoothstep(e.getShoreDistanceAt(ie),0,eY);if(b<=0)continue;let x=r===pe.Rock?Math.max(_.smoothstep(le,ZJ,QJ),$J):1,ue=e=>ma(n.seed,se,...p,e,...ee),S=ue(2),de=ce*x*b;if(S>=Math.min(de,1)*oe)continue;let me=ue(3)*ce,he=u[u.length-1];for(let[e,t]of y.entries())if(me-=t,me<0){he=u[e];break}let ge=fe[he];!ge.collision&&S>=Math.min(de*t,1)*oe||o.push({kind:he,position:new l(ne,e.getHeightAt(ie),re),rotationY:ue(4)*nY,tilt:(ue(5)-.5)*ge.tilt,height:_.lerp(ge.minimumHeight,ge.maximumHeight,ue(6))})}}return o}var aY=new l,oY=new f,sY=new l;function cY({placement:e,bounds:t,target:n}){let{position:r,rotationY:i,tilt:a,height:o}=e,s=o/(t.max.y-t.min.y);aY.set(r.x,r.y-t.min.y*s,r.z);let c=Gs(a/2),l=Ws(a/2),u=Gs(i/2),d=Ws(i/2);return oY.set(l*u,c*d,-l*d,c*u),n.compose(aY,oY,sY.setScalar(s))}function lY(e){return new Oe(e,{indirect:e.groups.length>1})}var uY=8,dY=new d,fY=new i,pY=new l,mY=new l,hY=new l;function gY(e,t){let n=[];for(let r of[t/2,-t/2])for(let t=0;t<=uY;t++){let i=t/uY*Math.PI*2;n.push(e*Ws(i),r,e*Gs(i))}let r=[];for(let e=0;e<uY;e++)r.push(e,9+e,e+1,9+e,9+e+1,e+1);let i=new u;return i.setAttribute(`position`,new g(n,3)),i.setIndex(r),i}function _Y({placements:e,shapes:t=$l(),body:n}){let r=new Map,a=[];for(let o of e){let{collision:e,minimumHeight:s,maximumHeight:c}=fe[o.kind];if(!e)continue;let l=r.get(o.kind);if(!l){let a=t[o.kind];if(!a)throw S(Error(`No collision shape for the scatter kind ${o.kind}: the model kit's manifest keeps no hull for it. Pass its shape in bakeObstacles' shapes, or bake the hulls again with pnpm nx models @spawnite/assets.`),`SP0104`,void 0);a.computeBoundingBox();let d=a.boundingBox??new i,f=new u;if(e===he.Mesh)f.setAttribute(`position`,a.getAttribute(`position`).clone()),a.index&&f.setIndex(a.index.clone());else{let e=n.step/c,t=n.height/s;fY.makeEmpty();let r=a.getAttribute(`position`),i=a.index,l=i?i.count:r.count,u=d.max.y-d.min.y,p=[],m=e=>{pY.lerpVectors(mY,hY,e),fY.expandByPoint(pY),p.push(pY.x,pY.z)};for(let n=0;n<l;n+=3)for(let a=0;a<3;a++){let o=n+a,s=n+(a+1)%3;mY.fromBufferAttribute(r,i?i.getX(o):o),hY.fromBufferAttribute(r,i?i.getX(s):s);let c=(mY.y-d.min.y)/u,l=(hY.y-d.min.y)/u,f=0,p=1;if(c===l){if(c<e||c>t)continue}else{let n=(e-c)/(l-c),r=(t-c)/(l-c);if(f=Math.max(0,Math.min(n,r)),p=Math.min(1,Math.max(n,r)),f>p)continue}m(f),m(p)}if(fY.isEmpty())throw S(Error(`No trunk in the scatter kind ${o.kind}: its shape has no faces between the walker's step and its height, where a trunk blocks. Give the kind a shape whose trunk spans that band, or let it collide by its whole mesh.`),`SP0105`,void 0);fY.getCenter(pY);let h=0;for(let e=0;e<p.length;e+=2)h=Math.max(h,z(p[e]-pY.x,p[e+1]-pY.z));let g=gY(h,u);g.translate(pY.x,(d.min.y+d.max.y)/2,pY.z),f.setAttribute(`position`,g.getAttribute(`position`)),f.setIndex(g.index)}l={shape:f,bounds:d},r.set(o.kind,l)}a.push(l.shape.clone().applyMatrix4(cY({placement:o,bounds:l.bounds,target:dY})))}for(let{shape:e}of r.values())e.dispose();if(a.length===0)return null;let o=De(a,!0);for(let e of a)e.dispose();if(!o)throw S(Error(`The collision parts do not merge`),`SP0106`,void 0);return lY(o)}function vY(e,t){if(t.length===3)return new l(...t);let[n,r]=t,i=new l(n,0,r);return i.y=e.getHeightAt(i),i}function yY(e,t){let{minimumHeight:n,maximumHeight:r}=fe[e];return(n+r)/2*t}function bY(e){let t=[];for(let[n,r]of Object.entries(e.map.props))`model`in r||`size`in r||t.push({kind:r.kind,position:vY(e,r.position),rotationY:_.degToRad(r.yaw),tilt:0,height:yY(r.kind,r.scale),prop:n});return t}function xY({name:e,value:t,valueSchema:n,reason:r}){return n.safeParse(t).success?!0:(console.warn(e,t,r),!1)}function SY(e){return xY({name:`hour`,value:e,valueSchema:Ce,reason:`is not a finite number; the clock keeps its last valid hour. Pass a finite hour, such as 18 for six in the evening.`})}function CY(e){let{hoursPerCycle:t}=Ng.dayCycle,n=e%t;if(n>=0)return n+0;let r=n+t;return r<t?r:0}function wY(e,t){if(!Number.isFinite(t))throw S(Error(`The day clock was handed the hour ${t}: pass a finite hour, such as 18 for six in the evening.`),`SP0236`,void 0);e.set(Kg,{hour:CY(t)})}function TY(e){return xY({name:`dayLengthSeconds`,value:e,valueSchema:Se,reason:`is not a finite, positive number the clock can divide a day by; the clock keeps its last valid length. Pass the real seconds a whole day takes, such as 600.`})}function EY(e,t){TY(t)&&e.set(Kg,{realSecondsPerCycle:t})}function DY(e,t){let n=e.get(Rg)?.surface;return n?(e.set(Vg,{placements:[...iY(n,t),...bY(n)]}),OY(e)):()=>void 0}function OY(e,{shapes:t}={}){if(e.has(Ug))throw S(Error(`Remove the ground's obstacles before baking again.`),`SP0237`,`bakeGroundObstacles`,e);let n=_Y({placements:e.get(Vg)?.placements??[],shapes:t,body:Ii});return e.add(Ug({bvh:n})),()=>{e.isAlive()&&e.remove(Ug),n?.geometry.dispose()}}function kY(e,{ground:t}){if(e.has(Wg))throw S(Error(`Remove the ground's navmesh before baking again.`),`SP0238`,void 0,e);let n=E(e),r=n?.get(Gg),i=r?.now()??0,a=e.get(Rg)?.surface.sea,o=a===void 0?t:c_(t,a-s_);if(!o)return r&&(r.milliseconds+=r.now()-i),()=>void 0;let s=n&&hq(n,e),c=o_({ground:o,obstacles:e.get(Ug)?.bvh?.geometry??null,colliders:s,body:Ii});return s?.dispose(),r&&(r.milliseconds+=r.now()-i),e.add(Wg({handle:c})),()=>{e.isAlive()&&e.remove(Wg),d_(c)}}var AY=y(Kg);function jY(e,t){let{hoursPerCycle:n}=Ng.dayCycle;dn(e,AY,([e])=>{e.hour=CY(e.hour+t*n/e.realSecondsPerCycle)})}var MY,NY,PY=e=>e!==MY,FY=e=>pn(e,Bg,`ground`)===NY,IY={};function LY(e,{ground:t},n){if(t!==void 0){NY=t;let n=fn(e,AY,FY);return NY=void 0,n}MY=fn(e,AY);let r=MY===void 0?void 0:fn(e,AY,PY),i=MY;if(MY=void 0,r!==void 0)throw S(Error(`${n} found ${e.query(AY).length} day clocks, one for each <World>: pass the World's ground as { ground } to pick one.`),`SP0239`,void 0);return i}function RY(e,t=IY){let n=LY(e,t,`findTimeOfDay`);return n===void 0?void 0:CY(pn(n,Kg,`hour`))}function zY(e,t,n=IY){let r=or(e,`setTimeOfDay`);if(!Number.isFinite(t))throw S(Error(`setTimeOfDay was handed the hour ${t}: pass a finite hour, such as 18 for six in the evening.`),`SP0240`,`setTimeOfDay`);let i=LY(r,n,`setTimeOfDay`);if(i===void 0)throw S(Error(n.ground===void 0?`setTimeOfDay found no day clock in the world: mount a <World>, which keeps one, or spawn one with spawnGround(world).`:`setTimeOfDay was handed a ground with no day clock: its World has unmounted, or it is no World's ground. Pass the ground of a mounted <World>, which useWorldEntity() returns.`),[[`SP0241`,`setTimeOfDay was handed a ground with no day clock: its World has unmounted, or it is no World's ground. Pass the ground of a mounted <World>, which useWorldEntity() returns.`],[`SP0242`,`setTimeOfDay found no day clock in the world: mount a <World>, which keeps one, or spawn one with spawnGround(world).`]],`setTimeOfDay`);wY(i,t)}function BY(e,t){let n=b_(e)?.get(O)?.position;n&&t.position.copy(n)}var VY={forward:HY(`forward`,[`KeyW`,`ArrowUp`],`Flies the free camera forward, away from where it looks back.`),back:HY(`back`,[`KeyS`,`ArrowDown`],`Flies the free camera back.`),left:HY(`left`,[`KeyA`,`ArrowLeft`],`Flies the free camera left across its view.`),right:HY(`right`,[`KeyD`,`ArrowRight`],`Flies the free camera right across its view.`),climbUp:HY(`climbUp`,[`KeyE`],`Lifts the free camera along the world's up; turns the map camera right.`),climbDown:HY(`climbDown`,[`KeyQ`],`Lowers the free camera along the world's up; turns the map camera left.`),cameraLock:HY(`cameraLock`,[`ShiftLeft`,`ShiftRight`],`Turns the camera's lock on or off; held, doubles the free camera's speed.`),interact:HY(`interact`,[`KeyE`],`Uses what the character stands near, whose prompt shows.`),menu:HY(`menu`,[`Escape`],`Opens or closes the play menu, or leaves its settings.`),performanceStats:HY(`performanceStats`,[`F2`],`Steps the performance overlay through its levels: off, FPS, graph and full.`)};function HY(e,t,n){return Object.freeze({name:e,keys:t,description:n})}var UY=new Set([`forward`,`back`,`left`,`right`,`climbUp`,`climbDown`]),WY=function(e){return e.Engine=`engine`,e.Button=`button`,e.Axis=`axis`,e.Vector=`vector`,e.Press=`press`,e.Action=`action`,e}({});function GY(e){return e.predicted===!0}function KY(e){let t=[];for(let n of Object.values(e.inputs)){let{name:e,description:r}=n;if(n.kind===$p.Button)t.push({name:e,kind:`button`,keys:n.keys,touch:n.touch,description:r,handle:n});else if(n.kind===$p.Vector){let{keys:i}=n;i&&t.push({name:e,kind:`vector`,keys:[...i.up,...i.down,...i.left,...i.right],directions:i,description:r,handle:n})}else n.kind===$p.Axis&&t.push({name:e,kind:`axis`,keys:[...n.keys?.negative??[],...n.keys?.positive??[]],negativeKeys:n.keys?.negative??[],description:r,handle:n})}for(let n of Object.values(e.messages))GY(n)&&(n.keys.length>0||n.touch)&&t.push({name:n.name,kind:`press`,keys:n.keys,touch:n.touch,handle:n});for(let n of Object.values(e.actions))t.push({name:n.name,kind:`action`,keys:n.keys,touch:n.touch,description:n.description,handle:n});return t}function qY(e){return Object.values(VY).map(({name:t,keys:n,description:r})=>({name:t,kind:`engine`,keys:e[t]??n,description:r}))}function JY(e,t,n){if(t.kind===`engine`&&e.kind!==`engine`)return`${e.name} takes ${n}, which the engine's ${t.name} takes: give ${e.name} another key, or move ${t.name} with controls({ keys: { ${t.name}: [...] } }) in the game's plugins, or drop it with controls({ keys: { ${t.name}: [] } }).`;let r=YY(t)&&YY(e)?`, or list each input in an inputContext, whose priorities pick which one the key fills`:``;return`${t.name} and ${e.name} both take ${n}: give one of them another key${r}.`}function YY(e){return e.handle!==void 0&&`kind`in e.handle}function XY(e,t={}){let n=[...qY(t),...e.flatMap(KY)],r=new Set(e.flatMap(e=>Object.values(e.contexts??{}).flatMap(e=>e.inputs))),i=e=>YY(e)&&r.has(e.name),a=new Map;for(let e of n)if(!UY.has(e.name))for(let t of e.keys){let n=a.get(t);if(n&&n!==e){if(i(n)&&i(e))continue;throw S(Error(JY(e,n,t)),[[`SP0143`,`%s takes %s, which the engine's %s takes: give %s another key, or move %s with controls({ keys: { %s: [...] } }) in the game's plugins, or drop it with controls({ keys: { %s: [] } }).`],[`SP0567`,`%s and %s both take %s: give one of them another key%s.`]],void 0)}a.set(t,e)}return{bindings:n,byName:new Map(n.map(e=>[e.name,e])),byKey:a}}var ZY=XY([]),QY=new WeakMap;function $Y(e,t){QY.set(e,t)}function eX(e){return QY.get(e)??ZY}var tX=function(e){return e.Player=`player`,e.World=`world`,e}({}),nX=[`schema`,`read`,`restore`,`version`,`migrations`,`scope`],rX=[`schema`,`read`,`restore`,`version`];function iX(e){return e.schema!==void 0}function aX(e,t){return e.length<2?e.join(``):`${e.slice(0,-1).join(`, `)} ${t} ${e.at(-1)}`}var oX=Symbol.for(`spawnite.save`),sX=Object.values(ye),cX=Object.values(tX);function lX(e,t){if(typeof t.schema?.safeParse!=`function`)throw S(Error(`${e}'s save has no schema: give it schema: z.object({ ... }) from @spawnite/schema, which checks every state loaded.`),`SP0521`,void 0);if(t.scope!==void 0&&!cX.includes(t.scope))throw S(Error(`${e}'s save has the scope "${String(t.scope)}": a save's scope is one of ${cX.join(`, `)}.`),`SP0522`,void 0);ve(e,t.version,t.migrations)}function uX(e){let t=nX.filter(t=>e[t]!==void 0),n=rX.filter(t=>e[t]===void 0);if(t.length>0&&n.length>0)throw S(Error(`The game's save gives ${aX(t,`and`)}, and no ${aX(n,`or`)}: a save of the game's own state gives schema, read, restore and version together, or none of them where it keeps only what include names and the kits keep.`),`SP0219`,`defineSave`);t.length>0&&lX(`The game`,e);let r=e.include??[];for(let e of r)if(!sX.includes(e))throw S(Error(`"${e}" is no engine save to include: the engine saves ${sX.join(`, `)}. A kit's save is on once the game lists the kit.`),`SP0220`,`defineSave`);if(r.includes(ye.Resources)&&!r.includes(ye.Stats))throw S(Error(`include names "resources" without "stats": a resource's maximum is a stat, restored first, so include both.`),`SP0221`,`defineSave`);return{...e,[oX]:!0}}var dX=Symbol.for(`spawnite.systemHandle`);function fX({plugin:e,key:t,phase:n,predicted:r,runsOn:i}){return Object.freeze({name:`${e}.${t}`,plugin:e,phase:n,predicted:r,runsOn:i,[dX]:!0})}function pX(e){return typeof e==`object`&&!!e&&dX in e}var mX=function(e){return e.Input=`input`,e.Motion=`motion`,e.Rules=`rules`,e.Physics=`physics`,e}({}),hX=[`input`,`motion`,`rules`,`physics`];function gX(e){return hX.includes(e)}function _X(e){return Object.freeze({...e,ifPresent:!0})}var vX=Symbol.for(`spawnite.plugin`),yX=Symbol.for(`spawnite.pluginSystems`),bX=Symbol.for(`spawnite.enginePlugin`),xX=Symbol.for(`spawnite.pluginFactoryName`);function SX(e){return e[yX]}function CX(e){return Object.defineProperty(e,bX,{value:!0}),e}function wX(e,t){let n=new Map,r=r=>{let i=e(r),a=JSON.stringify(i.options??null);return n.get(a)||(t?.(i),n.set(a,i),i)},i=r();return Object.assign(r,{systems:i.systems,messages:i.messages,inputs:i.inputs,collisionLayers:i.collisionLayers,[xX]:i.name})}function TX(e){return wX(e)}function EX(e){return bX in e}var DX=Symbol.for(`spawnite.omission`),OX=new Map;function kX(e){if(!pX(e))throw S(Error(`omit takes a system's handle, such as omit(behaviours.systems.reapDead).`),`SP0468`,`omit`);let t=e;if(t.core)throw S(Error(`omit(${e.name}): ${e.name} is the core's, which every world runs; anchor to it instead.`),`SP0469`,`omit`);if(t.ifPresent)throw S(Error(`omit(anchorIfPresent(${e.name})): pass the handle itself, omit(${e.name}).`),`SP0470`,`omit`);let n=OX.get(e.name);if(n)return n;let r=Object.freeze({handle:e,[DX]:!0});return OX.set(e.name,r),r}function AX(e){return typeof e==`object`&&!!e&&DX in e}function jX(e){return typeof e==`object`&&!!e&&vX in e}function MX(e){return typeof e==`function`&&xX in e}var NX=/^[a-z][a-z0-9-]*$/;function PX(e,t,n,r,i){for(let a of[`before`,`after`])for(let o of r[a]??[]){let r=`${e}.${n} runs ${a}`;if(pX(o)){if(o.phase!==t)throw S(Error(`${e}.${n} runs under ${t} and ${o.name} under ${o.phase}: an anchor orders systems of one phase, so move one of them.`),`SP0152`,void 0);continue}if(typeof o!=`string`)throw S(Error(`${r} something that is no system's handle: anchor another plugin's system by its handle, such as characters.systems.movement or siege.systems.spawn, and one of ${e}'s ${t} systems by its key.`),`SP0471`,void 0);if(o===n)throw S(Error(`${e}.${n} anchors itself: drop the anchor.`),`SP0154`,void 0);if(i.includes(o))continue;let s=o.indexOf(`.`);if(s!==-1){let n=o.slice(0,s),i=o.slice(s+1);throw S(Error(`${r} "${o}", a system's name: anchor another plugin's system by its handle, ${n}.systems.${i}, and one of ${e}'s ${t} systems by its key.`),`SP0472`,void 0)}throw S(Error(`${r} "${o}", which names no ${t} system of ${e}: its ${t} systems are ${i.join(`, `)}. A key names a system of the same plugin and phase, and another plugin's system is anchored by its handle, such as characters.systems.movement.`),`SP0473`,void 0)}}function FX(e,t,n,r,i){let a=r.replaces;if(a===void 0)return;let o=`${e}.${n} replaces`;if(!pX(a))throw S(Error(`${o} something that is no system's handle: name the system by its handle, such as replaces: behaviours.systems.chase.`),`SP0474`,void 0);let s=a;if(s.core)throw S(Error(`${o} ${s.name}, the core's, which every world runs: anchor to it instead.`),`SP0475`,void 0);if(s.ifPresent)throw S(Error(`${o} anchorIfPresent(${s.name}): name the handle itself.`),`SP0476`,void 0);if(s.plugin===e)throw S(Error(`${o} ${s.name}, a system of its own plugin: change that system instead.`),`SP0477`,void 0);let c=r.predicted===!0,l=(e,t)=>e?`a predicted system`:`a system that runs on ${t}`;if(s.phase!==t)throw S(Error(`${o} ${s.name}, which runs under ${s.phase}: a replacement takes its system's phase, so move ${e}.${n} under ${s.phase}.`),`SP0478`,void 0);if(s.predicted!==c||s.runsOn!==i)throw S(Error(`${o} ${s.name}, ${l(s.predicted,s.runsOn)}, with ${l(c,i)}: a replacement is the same kind as what it replaces. Match its predicted and runsOn, or omit ${s.name} and add the system beside it.`),`SP0479`,void 0)}function IX(e,t){let n=[],r=[];for(let i of t)if(pX(i)){let t=i;if(t.ifPresent)throw S(Error(`${e} requires anchorIfPresent(${t.name}): a requirement must run, so name the handle itself.`),`SP0480`,void 0);r.push(i)}else if(jX(i))n.push(i.name);else if(MX(i))n.push(i[xX]);else throw S(Error(`${e} requires something that is no plugin, engine factory or system handle: name each as requires: [stats, siege, behaviours.systems.capHealth].`),`SP0481`,void 0);if(n.includes(e))throw S(Error(`${e} requires itself: drop it from requires.`),`SP0159`,void 0);return{plugins:n,systems:r}}function LX(e){let{name:t}=e;if(!t)throw S(Error(`A plugin needs a name: definePlugin({ name: "siege" }).`),`SP0157`,`definePlugin`);if(!NX.test(t))throw S(Error(`"${t}" cannot name a plugin: a name is lower case letters, digits and dashes, starting with a letter, as "frost-nova" is.`),`SP0158`,`definePlugin`);let n=IX(t,e.requires??[]);e.save&&lX(t,e.save);let{options:r}=e;if(r!==void 0&&!_a(r,JSON.parse(JSON.stringify(r))))throw S(Error(`${t}'s options are not JSON: each value is a string, a finite number, a boolean, null, a list or a record of those, since a page and its room compare them as JSON.`),`SP0160`,`definePlugin`);let i=new Set,a={},{systems:o={},inputs:s,contexts:c,actions:l,requires:u,collisionLayers:d,...f}=e;for(let[e,n]of Object.entries(o)){if(!gX(e))throw S(Error(`${t} puts systems under "${e}", which is no phase of the step: the phases are ${hX.join(`, `)}.`),`SP0161`,`definePlugin`);if(Array.isArray(n))throw S(Error(`${t} lists its ${e} systems in a list: write a record whose keys name them, as ${e}: { tendWardens, dash: { system: dashCharacters, predicted: true } }.`),`SP0162`,`definePlugin`);let r=Object.entries(n??{});for(let[n,o]of r){if(!fm.test(n))throw S(Error(`"${n}" cannot name a system of ${t}: a name is letters and digits, starting with a letter, as "tendWardens" is.`),`SP0163`,`definePlugin`);if(i.has(n))throw S(Error(`${t}.${n} is listed twice: each system of a plugin runs under one name.`),`SP0164`,`definePlugin`);i.add(n);let r=typeof o==`function`?{system:o}:o,s=r.predicted===!0,c=Reflect.get(r,`runsOn`);if(s&&c!==void 0&&c!==k.Both)throw S(Error(`${t}.${n} steps a character on her own clock, predicted: true, so the room and her page both run it, and it cannot run on the ${String(c)} alone: drop runsOn, or drop predicted if it steps no character.`),`SP0165`,`definePlugin`);let l=RX(r);FX(t,e,n,r,l),a[n]=fX({plugin:t,key:n,phase:e,predicted:s,runsOn:l})}let o=r.map(([e])=>e);for(let[n,i]of r)typeof i==`object`&&PX(t,e,n,i,o)}let p=ds(t,e.messages??{});return{...f,requires:n.plugins,requiresSystems:n.systems,messages:p,inputs:hm(t,s??{}),contexts:dm(t,c??{}),actions:gm(t,l??{}),collisionLayers:na(t,d??[]),systems:Object.freeze(a),[yX]:o,[vX]:!0}}function RX(e){return e.predicted===!0?k.Both:e.runsOn??k.Server}function zX(e,{deltaSeconds:t,rerunEntity:n}){n?iM(n,t):oM(e,t)}var BX=CX(LX({name:`core`,description:`The step's own machinery: the input, the moves, the drawn correction, the day clock and the physics.`,systems:{input:{copyInput:{system:o$,description:`Copies the player's input into each entity the player controls under the client's authority.`,runsOn:k.Both}},motion:{move:{system:zX,predicted:!0,description:`Moves each entity by its velocity.`},blendCorrections:{system:(e,{deltaSeconds:t})=>dM(e,t),description:`Closes the drawn offset of each character the room corrected, so the correction eases in.`,runsOn:k.Client}},rules:{advanceDayClock:{system:(e,{deltaSeconds:t})=>jY(e,t),description:`Walks each World's day clock on by the hours the step's seconds buy at its day length.`}},physics:{physics:{system:(e,{deltaSeconds:t})=>pA(e,t),runsOn:k.Both,description:`Steps the physics scene once: builds and drops bodies, places each stand-in at its streamed pose, hands each body moveAndSlide moved its move as a kinematic target, steps Rapier, reads each dynamic body back, and destroys what fell out of the world.`},follow:{system:Kl,predicted:!0,after:[`physics`],description:`Stands each attached entity at its parent's pose and its offset, parents before children.`},restColliders:{system:e=>GK(e),after:[`physics`],description:`Marks each kinematic collider that has stood still half a second, so the navmesh bakes it in, and unmarks it as it moves.`,runsOn:k.Both}}}})),VX=Object.freeze({systems:Object.freeze(Object.fromEntries(Object.entries(BX.systems).map(([e,t])=>[e,Object.freeze({...t,core:!0})])))});function HX(e){return wX(e,CX)}var UX=HX(()=>LX({name:`stats`,description:`One formula for every stat, and the fields stats set.`,systems:{motion:{expireModifiers:{system:(e,{deltaSeconds:t})=>Ph(e,t),before:[`copyFields`,VX.systems.move],description:`Counts down each timed stat modifier, and drops it once spent.`,runsOn:k.Both},copyFields:{system:zh,predicted:!0,before:[VX.systems.move],description:`Sets each field a stat is registered to from the entity's stat.`}}}})),WX=HX(({autoSpawn:e=!0,keys:t}={})=>LX({name:`characters`,description:`The characters: their movement, their pushes and speed modifiers, and the character each player gets as she joins.`,collisionLayers:[`players`,`npcs`],...(!e||t)&&{options:{...!e&&{autoSpawn:e},...t&&{keys:{...t.move&&{move:{up:[...t.move.up],down:[...t.move.down],left:[...t.move.left],right:[...t.move.right]}},...t.jump&&{jump:[...t.jump]}}}}},inputs:Jm(t),contexts:Xm,...e&&{onPlayerJoin:aG},onPlayerDisconnect:oG,onPlayerReconnect:sG,onPlayerLeave:cG,systems:{physics:{movement:{system:_K,predicted:!0,before:[VX.systems.physics],description:`Steers each character on its input, or along its path while that input is not steering, writes the strafe and the aim of its input into its pose, and moves it with moveCharacter: on the room, every character no player controls first, then each player's character, bases before riders.`},countDown:{system:_G,predicted:!0,after:[`movement`],before:[VX.systems.physics],description:`Counts down each character's timed speed modifiers, and ends each: on the player's page too, which predicts them.`}}}})),GX=HX(()=>LX({name:`cooldowns`,description:`One timer abilities, items and resources share.`,systems:{rules:{countDown:{system:xB,predicted:!0,description:`Counts down each entity's cooldowns, and ends each: a character's on the player's page too, which predicts them.`}}}})),KX=HX(()=>LX({name:`machines`,description:`The state machines: the round, the NPC runner, a game's own.`,systems:{rules:{advance:{system:(e,{deltaSeconds:t})=>iL(e,t),description:"Counts each state machine's wait, and moves on each one whose wait is spent or whose `when` holds.",runsOn:k.Both}}}})),qX=[_X(KX.systems.advance)],JX=HX(()=>LX({name:`behaviours`,description:`The engine's behaviours: spin, bob, pickup, interact, trigger, health and chase.`,messages:{interact:np},systems:{rules:{spin:{system:(e,{deltaSeconds:t})=>zV(e,t),description:`Turns each spinning entity round y.`,runsOn:k.Both},bob:{system:(e,{deltaSeconds:t})=>HV(e,t),description:`Rises and falls each bobbing entity.`,runsOn:k.Both},pickup:{system:e=>GV(rr(e)),description:`Credits each pickup a player's character reaches to that character's wallet, and removes it.`},interact:{system:e=>YV(e),description:`Marks each Interact a character stands near, and takes each press within its reach.`,runsOn:k.Both},trigger:{system:e=>ZV(e),description:`Marks each trigger a character stands within, and raises its enter and exit.`,runsOn:k.Both},capHealth:{system:e=>oH(e),description:`Clamps each health under its maximum.`},reapDead:{system:e=>sH(e),description:`Removes each entity at zero health, and downs a player's character or one with a respawn instead.`},respawnDowned:{system:(e,{deltaSeconds:t})=>bN(e,t),description:`Stands each downed entity with a respawn again once its wait is spent.`},chase:{system:e=>bH(e),description:`Points each chaser's velocity at the nearest character it accepts, and parts chasers that overlap.`}}}})),YX=HX(()=>LX({name:`resources`,description:`Health, and each resource a game declares: mana, rage, stamina.`,requires:[UX,GX.systems.countDown],onCharacterSpawn:(e,{resources:t=[]})=>{for(let n of t)QB(e,n)},systems:{rules:{regenerate:{system:(e,{deltaSeconds:t,rerunEntity:n,authoritative:r})=>cV(e,t,n,r),predicted:!0,description:`Regenerates or decays each resource, such as mana, between 0 and its maximum: a character's on the player's page too, which predicts it, health aside.`}}}})),XX=HX(()=>LX({name:`weapons`,description:`Weapons: the shots the room judges, and the projectiles in flight.`,requires:[JX],onCharacterSpawn:(e,{weapons:t})=>{t&&e.add(DU([...t])),E(e)?.has(Vn)&&e.add(IU,NU)},systems:{rules:{flyProjectiles:{system:XU,before:qX,description:`Flies each projectile, and damages the first target it meets.`,runsOn:k.Both}}}})),ZX=Object.values(JX.systems).map(e=>_X(e)),QX=HX(()=>LX({name:`inventory`,description:`The bag, what an entity wears, the uses of its items, loot, and locks.`,requires:[UX,GX.systems.countDown,JX],onCharacterSpawn:(e,{bagSlots:t=16})=>{HM(e,t),OK(e,{})},systems:{rules:{useItems:{system:BK,before:ZX,description:`Runs the uses asked of each entity's items.`},loot:{system:e=>qV(rr(e)),after:[_X(JX.systems.pickup)],before:[_X(JX.systems.interact)],description:`Puts each loot a player's character reaches into that character's bag as far as it fits.`}}}})),$X=HX(()=>LX({name:`tracks`,description:`Tracks: each mover's ride along its track, and the triggers it reaches.`,requires:[WX],systems:{input:{copyInput:{system:c$,before:[VX.systems.copyInput],description:`Copies the player's steer and jump into each track mover under the client's authority.`,runsOn:k.Both}},motion:{move:{system:(e,{deltaSeconds:t})=>RJ(e,t),description:`Moves each track mover along its track, and stands its entity there.`,runsOn:k.Both},markTriggers:{system:(e,t)=>WJ(e,t),after:[`move`],description:`Marks the track triggers a mover stands in, enters or leaves.`,runsOn:k.Both}}}})),eZ=HX(({castsPerSecond:e=20}={})=>{if(!Number.isFinite(e)||e<=0)throw S(Error(`abilities({ castsPerSecond: ${e} }): pass a positive finite number of cast presses a second, such as 20, the default, or leave it out.`),`SP0137`,`abilities`);return LX({name:`abilities`,...e!==20&&{options:{castsPerSecond:e}},description:`Casting: each cast a player presses, its approach, its wind-up and its release.`,requires:[XX,GX.systems.countDown,YX,WX],messages:{cast:jH(e)},onCharacterSpawn:(e,{abilities:t})=>{t&&BH(e,`player`,t)},systems:{input:{approach:{system:yU,description:`Walks each caster toward the target of its pending cast, as a click to walk does, and stops it once the target is in range.`,runsOn:k.Both}},rules:{cast:{system:_W,predicted:!0,before:[XX.systems.flyProjectiles,...qX],description:`Starts or refuses each cast a player pressed, and winds each cast down to its release, its cancel or its fizzle: on her page too, up to the release's outcomes, which the room alone decides.`},keepRefusals:{system:JW,after:[`cast`],description:`Files each cast refusal for the devtools' ability inspector.`,runsOn:k.Both}}}})}),tZ=HX(()=>LX({name:`npcs`,description:`NPCs: each one's routine, and the conversations a player opens.`,requires:[KX,JX,WX],messages:{dialog:AL},systems:{rules:{converse:{system:(e,t)=>gJ(e,t),after:[JX.systems.interact],before:[`runRoutines`,...qX],description:`Starts a conversation on each press of an NPC with a Dialog, takes each pick, and moves each conversation on.`,runsOn:k.Both},runRoutines:{system:(e,t)=>Hq(e,t),after:[JX.systems.interact],before:qX,description:`Sends each NPC's routine what happened to it, and does the step it is on.`,runsOn:k.Both}}}})),nZ=HX(({keys:e={}}={})=>{for(let t of Object.keys(e))if(!(t in VY))throw S(Error(`controls({ keys: { ${t} } }): ${t} is no engine action; they are ${Object.keys(VY).join(`, `)}.`),`SP0138`,`controls`);return LX({name:`controls`,description:`The engine's actions moved to other keys, or dropped.`,options:{keys:Object.fromEntries(Object.entries(e).map(([e,t])=>[e,[...t??[]]]))}})});function rZ(e){return e.find(e=>e.name===`controls`)?.options?.keys??{}}var iZ=[`stats`,`core`,`characters`,`cooldowns`,`behaviours`,`inventory`,`resources`,`machines`,`abilities`,`weapons`,`npcs`,`tracks`,`rounds`,`controls`];function aZ(e){return iZ.includes(e)}var oZ=new WeakMap;function sZ(e){return oZ.get(e)}function cZ(e){return oZ.get(e)?.predicted===!0}function lZ(e){return oZ.get(e)?.description}function uZ(e,t,n,r){let i={[k.Both]:r?(n,r)=>jo(()=>Ft(e,t,n,r)):(n,r)=>Ft(e,t,n,r),[k.Server]:(n,r)=>{n.has(zn)||Ft(e,t,n,r)},[k.Client]:(n,r)=>{n.has(Vn)||Ft(e,t,n,r)}};return Object.defineProperty(i[n],"name",{value:e})}function dZ(e,t={plugins:[],omissions:[]}){for(let n of e)n&&(jX(n)?t.plugins.push({plugin:n,entry:t.plugins.length+t.omissions.length+1}):AX(n)?t.omissions.push(n):dZ(n,t));return t}function fZ(e){let{plugins:t,omissions:n}=dZ(e);return[...t.map(({plugin:e})=>e),...n]}function pZ(e){return aZ(e)&&e!==BX.name?`${e}()`:e}function mZ(e){let t=[],n=new Map;for(let r of e){let{plugin:e}=r;if(t.includes(e))continue;let{name:i}=e;if(i===BX.name)throw S(Error(`"core" is the name of the engine's core, which every world runs: give entry ${r.entry} of plugins another name.`),`SP0444`,void 0);let a=n.get(i);if(a){if(EX(e)&&EX(a.plugin)&&_a(e.options??null,a.plugin.options??null))continue;throw S(Error(EX(e)&&EX(a.plugin)?`${i}() is listed twice with different options, entries ${a.entry} and ${r.entry} of plugins: list it once, with the options the game wants.`:`Two plugins are named "${i}": entries ${a.entry} and ${r.entry} of plugins. One plugin appears once: a kit requires it and the game lists it.`),[[`SP0445`,`%s() is listed twice with different options, entries %s and %s of plugins: list it once, with the options the game wants.`],[`SP0125`,`Two plugins are named "%s": entries %s and %s of plugins. One plugin appears once: a kit requires it and the game lists it.`]],void 0)}n.set(i,r),t.push(e)}return t}function hZ(e){let t=({name:e})=>aZ(e),n=[BX,...e.filter(t)];return n.sort((e,t)=>iZ.indexOf(e.name)-iZ.indexOf(t.name)),[...n,...e.filter(e=>!t(e))]}function gZ(e,t,n){let r=[],i=new Set,a=[],o=e=>{if(i.has(e))return;let s=a.indexOf(e);if(s!==-1)throw n([...a.slice(s),e]);a.push(e);for(let n of t(e))o(n);a.pop(),i.add(e),r.push(e)};for(let t of e)o(t);return r}function _Z(e){let t=new Map(e.map(e=>[e.name,e]));return gZ(e,e=>e.requires.flatMap(e=>t.get(e)??[]),e=>S(Error(`Plugins require each other in a cycle: ${e.map(e=>e.name).join(` requires `)}. Two plugins that react to each other do it through the traits and events each writes on the world; drop one requires.`),`SP0126`,void 0))}function vZ(e,t){if(typeof e==`string`)return{name:`${t}.${e}`,plugin:t,ifPresent:!1,writtenBy:t};let n=e;return{name:n.name,plugin:n.plugin,ifPresent:n.ifPresent===!0,writtenBy:t}}function yZ(e){let t=[];for(let n of e)for(let e of hX)for(let[r,i]of Object.entries(SX(n)[e]??{})){let a=typeof i==`function`?{system:i}:i,o=a.replaces;t.push({name:`${n.name}.${r}`,plugin:n.name,phase:e,description:a.description,predicted:a.predicted===!0,runsOn:RX(a),isEngine:EX(n),system:a.system,before:(a.before??[]).map(e=>vZ(e,n.name)),after:(a.after??[]).map(e=>vZ(e,n.name)),...o&&{replacing:o}})}return t}function bZ(e,t){return`the game lists no plugin named ${e}: ${t.length?`it lists ${t.map(({name:e})=>pZ(e)).join(`, `)}`:`it lists none`}. Add ${pZ(e)} to plugins`}function xZ(e,t){return`${t}.systems.${e.slice(t.length+1)}`}function SZ(e,{byName:t,replacedBy:n}){let r=t.get(e);for(;r&&n.has(r.name);)r=n.get(r.name);return r}function CZ(e,t){let n=new Map;for(let r of e){let{name:e,plugin:i}=r.handle,a=`omit(${xZ(e,i)})`;if(!t.listed.has(i))throw S(Error(`${a} names a system of ${i}, but ${bZ(i,t.game)}, or drop the omit.`),`SP0446`,void 0);let o=t.byName.get(e);if(!o)throw S(Error(`${a} names no system of ${i}: its systems are ${wZ(i,t.byName)}.`),`SP0447`,void 0);if(o.plugin===BX.name)throw S(Error(`${a}: ${e} is the core's, which every world runs.`),`SP0448`,void 0);if(o.replacing)throw S(Error(`${a} omits a replacement of ${o.replacing.name}: drop ${i}'s replaces, or omit ${xZ(o.replacing.name,o.replacing.plugin)} and leave ${i} out.`),`SP0449`,void 0);n.set(e,r)}return n}function wZ(e,t){let n=[...t.values()].filter(t=>t.plugin===e).map(e=>e.name);return n.length?n.join(`, `):`none`}function TZ(e,t){let n=new Map;for(let r of e){let e=r.replacing;if(!e)continue;let i=`${r.name} replaces ${e.name}`;if(!t.listed.has(e.plugin))throw S(Error(`${i}, but ${bZ(e.plugin,t.game)}, or drop the replaces.`),`SP0450`,void 0);let a=t.byName.get(e.name);if(!a)throw S(Error(`${i}, which names no system of ${e.plugin}: its systems are ${wZ(e.plugin,t.byName)}.`),`SP0451`,void 0);if(a.plugin===BX.name)throw S(Error(`${i}, the core's, which every world runs: anchor to it instead.`),`SP0452`,void 0);if(t.omitted.has(a.name))throw S(Error(`${i}, which the list also omits: keep one of the two entries.`),`SP0453`,void 0);let o=n.get(a.name);if(o)throw S(Error(`${o.name} and ${r.name} both replace ${a.name}: one system takes its place, so drop one replaces.`),`SP0454`,void 0);if(a.phase!==r.phase||a.predicted!==r.predicted||a.runsOn!==r.runsOn)throw S(Error(`${i}, of another kind: a replacement runs under ${a.phase}, ${a.predicted?`predicted`:`on ${a.runsOn}`}, as ${a.name} does. Omit ${a.name} and add the system beside it instead.`),`SP0455`,void 0);n.set(a.name,r)}for(let e of n.keys()){let t=[e],r=n.get(e);for(;r;){if(t.includes(r.name))throw S(Error(`Replacements loop: ${[...t,r.name].join(` is replaced by `)}. Drop one replaces.`),`SP0456`,void 0);t.push(r.name),r=n.get(r.name)}}return n}function EZ(e,t){let n=[],r=new Map;for(let i of e){if(i.replacing||t.omitted.has(i.name))continue;if(!t.replacedBy.has(i.name)){n.push(i);continue}let e=[i],a=t.replacedBy.get(i.name);for(;a;)e.push(a),a=t.replacedBy.get(a.name);let o=e[e.length-1];n.push({...o,before:e.flatMap(e=>e.before),after:e.flatMap(e=>e.after)}),r.set(o.name,i.name)}return{filled:n,origins:r}}function DZ(e,t,n,r){if(!r.listed.has(e.plugin)){if(e.ifPresent)return;throw S(Error(`${n.name} runs ${t} ${e.name}, but ${bZ(e.plugin,r.game)}, or anchor with anchorIfPresent(${xZ(e.name,e.plugin)}) where ${n.name} orders against it only when it runs.`),`SP0457`,void 0)}if(r.omitted.get(e.name)){let r=e.writtenBy!==n.plugin;if(e.ifPresent||r||e.writtenBy===e.plugin)return;throw S(Error(`${n.name} runs ${t} ${e.name}, which the list omits with omit(${xZ(e.name,e.plugin)}): drop the omit, or anchor ${n.plugin} with anchorIfPresent where it orders against ${e.name} only when it runs.`),`SP0458`,void 0)}if(!r.byName.has(e.name))throw S(Error(`"${e.name}" names no system of ${e.plugin}: its systems are ${wZ(e.plugin,r.byName)}.`),`SP0459`,void 0);let i=SZ(e.name,r);if(i){if(i.name===n.name){if(e.writtenBy!==n.plugin)return;throw S(Error(`${n.name} anchors itself: drop the anchor.`),`SP0132`,void 0)}if(i.phase!==n.phase)throw S(Error(`${n.name} runs under ${n.phase} and ${e.name} under ${i.phase}: an anchor orders systems of one phase, so move one of them.`),`SP0133`,void 0);return i}}function OZ(e,t,n){let r=new Map(e.map(e=>[e,[]])),i=e=>n.get(e.name)??e;for(let n of e){for(let e of n.before){let a=DZ(e,`before`,n,t);a&&r.get(i(a))?.push(n)}for(let e of n.after){let a=DZ(e,`after`,n,t);a&&r.get(n)?.push(i(a))}}return gZ(e,e=>r.get(e)??[],e=>S(Error(`Systems anchor each other in a cycle: ${e.map(e=>e.name).reverse().join(` before `)}. Drop one anchor.`),`SP0134`,void 0))}function kZ(e,t){for(let n of e){let e=pZ(n.name);for(let r of n.requires)if(!t.listed.has(r))throw S(Error(`${e} needs ${pZ(r)}: add ${pZ(r)} to plugins.`),`SP0460`,void 0);for(let r of n.requiresSystems){let i=xZ(r.name,r.plugin);if(!t.listed.has(r.plugin))throw S(Error(`${e} needs ${i}: ${bZ(r.plugin,t.game)}.`),`SP0461`,void 0);if(t.omitted.has(r.name))throw S(Error(`${e} needs ${i}, which the list omits with omit(${i}): drop the omit, or ${n.name}.`),`SP0462`,void 0);if(!t.byName.has(r.name))throw S(Error(`${e} needs "${r.name}", which names no system of ${r.plugin}: its systems are ${wZ(r.plugin,t.byName)}.`),`SP0463`,void 0)}if(n.resources?.length&&!t.listed.has(`resources`))throw S(Error(`${e} gives every character resources, which resources() keeps: add resources() to plugins.`),`SP0464`,void 0)}}function AZ(e,t,n){return{name:e.name,description:e.description,requires:e.requires,options:e.options,systems:t.filter(t=>t.plugin===e.name).map(e=>e.name),isEngine:EX(e),omitted:[...n.values()].filter(({handle:t})=>t.plugin===e.name).map(({handle:e})=>e.name)}}function jZ(e){let t=dZ(e),n=mZ(t.plugins),r=hZ(n),i=new Set(r.map(e=>e.name)),a=yZ(r),o={byName:new Map(a.map(e=>[e.name,e])),listed:i,game:n},s=CZ(t.omissions,o),c=TZ(a,{...o,omitted:s}),l={...o,omitted:s,replacedBy:c};kZ(r,l);let{filled:u,origins:d}=EZ(a,l),f=new Map(u.map(e=>[e.name,e])),p=hX.flatMap(e=>OZ(u.filter(t=>t.phase===e),l,f)).map(e=>{let t=d.get(e.name),n=uZ(e.name,e.system,e.runsOn,e.predicted),r={plugin:e.plugin,phase:e.phase,description:e.description,predicted:e.predicted,runsOn:e.runsOn,isEngine:e.isEngine,...t&&{replaces:t}};return oZ.set(n,r),{...r,name:e.name,system:n}}),m=r.filter(e=>e!==BX),h=_Z(m);return{plugins:m.map(e=>AZ(e,p,s)),listed:m,entries:p,systems:p.map(e=>e.system),omitted:[...s.keys()],messages:m.flatMap(e=>Object.values(e.messages)),inputs:vm(m),bindings:XY(m,rZ(m)),setups:h.flatMap(({setup:e})=>e??[]),characterSpawns:h.flatMap(({resources:e,onCharacterSpawn:t})=>[...e&&e.length>0?[NZ(e)]:[],...t?[t]:[]]),collisionLayers:ra(m.map(e=>({plugin:e.name,layers:Object.values(e.collisionLayers??{})}))),playerHooks:{join:MZ(h,`onPlayerJoin`),ready:MZ(h,`onPlayerReady`),disconnect:MZ(h,`onPlayerDisconnect`),reconnect:MZ(h,`onPlayerReconnect`),leave:MZ([...h].reverse(),`onPlayerLeave`)},releaseHooks:h.flatMap(({name:e,onControlRelease:t})=>t?[{plugin:e,hook:t}]:[]),contexts:m.flatMap(e=>Object.values(e.contexts??{}))}}function MZ(e,t){return e.flatMap(e=>{let n=e[t];return n?[{plugin:e.name,hook:n}]:[]})}function NZ(e){return t=>{for(let n of e)QB(t,n)}}var PZ=new WeakMap;function FZ(e){return PZ.get(e)??[]}function IZ(e=[],t=gt){if(!yt(t))throw S(Error(`The world's physics is not the settings definePhysics made: export physics = definePhysics({ ... }) from src/game.ts and pass that object on.`),`SP0497`,`createGameWorld`);let n=jZ(e),r=[...n.systems],i=ia({layers:n.collisionLayers}),a=ae(r$(r),lr,bt({settings:t}),i);PZ.set(a,n.listed),Lm(a,n.inputs),$Y(a,n.bindings),fg(a,n.characterSpawns),IL(a,n.playerHooks),dR(a,n.releaseHooks),Bm(a,n.contexts);let o=[],s=()=>{ZR(a,0);for(let{name:e,settings:t}of n.messages)wa(a,e,t);a.add(Vi(n.plugins));try{for(let e of n.setups){let t=e(a);t&&o.push(t)}}catch(e){throw c(),e}},c=()=>{for(let e of o.reverse())try{e()}catch(e){console.error(`A plugin's disposer threw: make it safe to run as its world resets or goes.`,e)}o=[]};try{s()}catch(e){throw a.destroy(),e}let l,u=()=>{l?.(),l=JI(a),a.onAdd(I(il),e=>{Sl(e),z_(a)}),a.onChange(I(il),Sl),a.onAdd(I(el),Sl),a.onChange(I(el),Sl),a.onAdd(Rg,()=>z_(a)),a.onRemove(Fn,e=>{for(let t of e.get(Fn)?.disposers??[])try{t()}catch(e){console.error(`A resource's disposer threw as its entity was removed: make it safe to run once the entity is gone.`,e)}}),a.onAdd(O,e=>{let t=e.get(O);if(!t)return;e.has(Cn)||e.add(Cn);let n=e.get(Cn);n&&yn(n,t)}),a.onChange(V,e=>{e.has(Dj)&&(e.get(V)?.current??0)>0&&e.remove(Dj)}),a.onRemove(Fp,e=>{e.has(Oj)&&e.remove(Oj)})};u();let d=()=>{let e=a.get(N)?.handle;e&&(MD(e),a.set(N,{handle:null}))},f=a.reset.bind(a);a.reset=()=>{c(),d();let e=[...a[b].trackingSnapshots.keys()];f(),sR(a);let i=a[b];for(let t of e){let e=structuredClone(i.entityMasks),n=()=>e.map(e=>e.map(()=>0));i.trackingSnapshots.set(t,e),i.dirtyMasks.set(t,n()),i.changedMasks.set(t,n())}u(),a.add(r$(r),lr,bt({settings:t}),ia({layers:n.collisionLayers})),s()};let p=a.destroy.bind(a);return a.destroy=()=>{c(),d(),l?.(),a.reset=f,p()},a}function LZ(e){let t=Object.values(e);if(t.length===0)throw S(Error(`defineLevels needs at least one level`),`SP0243`,`defineLevels`);let n=t.find((e,n)=>t.indexOf(e)!==n);if(n!==void 0)throw S(Error(`defineLevels lists the level "${n}" twice: give each level its own id.`),`SP0244`,`defineLevels`);let r=Object.freeze(e);return RZ=r,r}var RZ;function zZ(){return RZ}function BZ({finished:e},t){return Object.hasOwn(e,t)?e[t]:null}function VZ(e){return e.queryFirst(Jg)?.get(Jg)}function HZ(e){return e.ids.map((t,n)=>{let r=BZ(e,t);return{id:t,finished:r!==null,unlocked:n===0||BZ(e,e.ids[n-1])!==null,best:r}})}function UZ(e){let t=VZ(e);return t?HZ(t):[]}function WZ(e){let t=VZ(e);return t?.ids[t.ids.indexOf(t.current)+1]??null}function GZ(e,t){let n=Object.values(t);return e.spawn(Jg({ids:n,current:n[0]}))}function KZ(e,{score:t,seconds:n}){let r=e.queryFirst(Jg),i=r?.get(Jg);if(!r||!i?.current)return;let a=BZ(i,i.current);r.set(Jg,{finished:{...i.finished,[i.current]:{score:Math.max(t,a?.score??0),seconds:Math.min(n,a?.seconds??1/0)}}})}function qZ(e,t){let n=e.queryFirst(Jg),r=n?.get(Jg),i=r&&HZ(r).find(e=>e.id===t);if(!n||!i)throw S(Error(`Cannot play level "${t}": the game lists none by that id. Name one of ${r?.ids.join(`, `)||`the ids defineLevels lists, and mount the levels first`}.`),`SP0245`,`playLevel`);return i.unlocked?(n.set(Jg,{current:t}),!0):!1}function JZ(e){let t=VZ(e);return t&&{...t.finished}}function YZ(e,t={}){let n=e.queryFirst(Jg),r=n?.get(Jg);if(!n||!r)return;let i={...t},a=r.ids.find(e=>!Object.hasOwn(i,e));n.set(Jg,{finished:i,current:a??r.ids[0]})}function XZ(e,{map:t=_e,terrain:n,dayLengthSeconds:r=Kg.schema.realSecondsPerCycle,startHour:i=Kg.schema.hour}={}){let a=e.spawn(Rg({surface:Ag(t,n)}),Vg),o=Bn(e)?void 0:e.spawn(Bg({ground:a}),Kg({hour:SY(i)?CY(i):Kg.schema.hour,realSecondsPerCycle:TY(r)?r:Kg.schema.realSecondsPerCycle}));return{ground:a,clock:o,remove:()=>{o?.destroy(),a.destroy()}}}async function ZZ({scene:e,seed:t=_e.seed,plugins:n,physics:r,dev:i=!0,levels:a}){await Promise.all([tu(),i&&DN()]);let o=IZ(n,r);return i&&o.add(j),a&&GZ(o,a),XZ(o,{map:{..._e,seed:t}}),e(o),{world:o,input:{}}}function QZ({world:e,input:t},n){let r=Math.round(n/GQ);for(let n=0;n<r;n++)S$(e,{deltaSeconds:GQ,input:t})}function $Z({world:e},t){let n=e.queryFirst(w);if(!n){if(p_(e,{position:t,facing:0,health:V.schema}),n=e.queryFirst(w),!n)throw S(Error(`No character spawned.`),`SP0090`,`placeCharacter`);n.add(Qf),n.add(xn({context:k.Client}))}let r=n.get(O);return r&&(r.position.copy(t),n.set(O,r)),n}function eQ(e,t,n){let r=e.get(U),i=E(e);if(!r||!i)throw S(Error(`sendPlayerInput() got an entity with no Input: pass the character that placeCharacter or spawnCharacter returns.`),`SP0091`,`sendPlayerInput`);gh(Rm(i),r,t,n),e.set(U,{buttons:r.buttons})}function tQ({world:e,input:t},n,r){gh(Rm(e),t,n,r)}var nQ=new Map,rQ=new Map,iQ=new Map,aQ=new Map;function oQ(e){for(let t of nQ.values())if(t===e)return!0;for(let t of rQ.values())if(t===e)return!0;return!1}function sQ(e){return wQ(e,[...rQ])}var cQ=new Map;function lQ(e,t){return cQ.has(t)?()=>void 0:Ne(nQ,e,t)}Ze(({name:e,trait:t,ownerOnly:n,serverOnly:r,local:i})=>{cQ.set(t,e),n?rQ.set(e,t):r||i?iQ.set(e,t):nQ.set(e,t)});var uQ=new Map,dQ=new Map([[`chase`,wp],[`equipment`,eN],[`interact`,xp],[`inventory`,$M],[`lock`,bp],[`loot`,tN],[`movement`,Zh],[`npc`,wL],[`respawn`,dN],[`stats`,Ep],[`trackMover`,OJ],[`trackTrigger`,jJ],[`trigger`,Sp]]);function fQ(e,t){let n=lQ(e,t.trait),r=cQ.get(t.trait)??e;return dQ.set(r,t),()=>{n(),dQ.get(r)===t&&dQ.delete(r)}}var pQ=dQ,mQ=uQ;Yi(e=>{fQ(e.name,e),uQ.set(e.name,e)}),GI(e=>{e.ownerOnly?rQ.set(e.name,e.trait):lQ(e.name,e.trait);for(let[t,n]of e.tagNames)aQ.set(t,n)});var hQ=new Set(dQ.values()),gQ=new Set(xr()),_Q=new Set([...nQ.values(),...rQ.values(),...iQ.values()]);function vQ(e){return nQ.get(e)??rQ.get(e)??iQ.get(e)??aQ.get(e)}function yQ(e){let t=cQ.get(e);if(t!==void 0)return t;for(let[t,n]of nQ)if(n===e)return t}function bQ(){return xQ(!0)}function xQ(e=!1){return(e?[...new Map([...iQ,...aQ,...rQ,...nQ])]:[...nQ]).sort(([e],[t])=>e<t?-1:1)}function SQ(e){return ga(e,4)}function CQ(e){if(typeof e==`number`)return SQ(e);if(e instanceof o||e instanceof l||e instanceof f)return e.toArray().map(SQ);if(Array.isArray(e))return e.map(CQ);if(typeof e==`function`)return;if(typeof e!=`object`||!e)return e;let t={},n=Object.entries(e).sort(([e],[t])=>e<t?-1:1);for(let[e,r]of n){let n=CQ(r);n!==void 0&&(t[e]=n)}return t}function wQ(e,t=xQ()){let n={};for(let[r,i]of t){if(!e.has(i))continue;let t=e.get(i);if(t===void 0){n[r]=!0;continue}let a=CQ(t),o=TQ(i),s=o.length>0&&E(e);s&&EQ(s,a,o,e=>Xa(s,e)),n[r]=a}return n}function TQ(e){return Ke(e)}function EQ(e,t,n,r=t=>Za(e,t)){for(let e of n)pr(t,e,(e,t)=>{let n=e[t];typeof n==`number`?e[t]=r(n):Array.isArray(n)&&(e[t]=n.map(e=>typeof e==`number`?r(e):e))})}function DQ(e,t,n,r){let i=CQ(n);return EQ(e,i,Sr(t),r),i}function OQ(e){return Ai(e).map(t=>{let n=br(t.name),r=t.on>=0&&t.on.isAlive(),i=n?.scope!==`world`;return{tick:t.tick,step:t.step,place:t.place,emitter:t.emitter,...i&&{entity:r?Za(e,t.on):null},name:t.name,record:n?DQ(e,n,t.record,t=>Xa(e,t)):CQ(t.record)}})}function kQ(e,t=!1){let n={},r=xQ(t);for(let i of e.entities){if(!t&&i.has(_y))continue;let a=wQ(i,r);Object.keys(a).length!==0&&(t||AQ(i,a),n[Za(e,i)]=a)}return n}function AQ(e,t){let n=t[jQ];typeof n==`object`&&n&&(t[jQ]={controller:e.get(w)?.visibility===ct.Controller?null:n.controller})}var jQ=`controlled`;function MQ(e){let t=kQ(e,!0);return{entities:t,hash:ha(JSON.stringify(t)),plugins:e.get(Vi)??[],systems:k$(e),events:OQ(e)}}var NQ=x({seed:0});function PQ(e,t){e.has(NQ)?e.set(NQ,{seed:t|0}):e.add(NQ({seed:t|0}))}function FQ(e){return zQ(e^1540483477)}function IQ(e){return e.get(NQ)?.seed??0}var LQ=new Map;function RQ(){LQ.clear()}function zQ(e){return e=Math.imul(e^e>>>16,2246822507),e=Math.imul(e^e>>>13,3266489909),(e^e>>>16)>>>0}function BQ(e,t,n){let r=LQ.get(n)??0;LQ.set(n,r+1);let i=zQ(IQ(e)^2654435769);return i=zQ(i^t),i=zQ(i^ha(Za(e,n))),i=zQ(i^r),i/4294967296}function VQ(e){let t=e.replaceAll(`-`,` `);return t.charAt(0).toUpperCase()+t.slice(1)}function HQ(e){return e?.isAlive()?e.get(An)?.name||e.get(Op)?.name||e.get(SL)?.name||VQ(e.get(On)?.name??``):``}function UQ(e,t){return{key:Za(e,t),name:HQ(t)}}function WQ(e,t,n,r){ue(t,{boundary:de.System,system:n,tick:r},{describeEntity:t=>UQ(e,t)})}var GQ=1/60,KQ=.1;function qQ(e,t){e.buttons=t.buttons,JQ(e,t,`axes`),JQ(e,t,`vectors`),JQ(e,t,`angles`),JQ(e,t,`changes`)}function JQ(e,t,n){let r=t[n];r?.length?eh(e[n]??=[],r):e[n]&&(e[n].length=0)}function YQ(e){return!Bn(e)}function XQ(e,t){let n=t;return n.tick=dr(e),n.authoritative=YQ(e),RQ(),ZC(),n.updateEachPredicted||Object.defineProperties(n,{updateEachPredicted:{value:((e,t)=>n$(n,e,t))},random:{value:(t=>BQ(n[qn]??e,n.tick,t))},[qn]:{writable:!0},world:{get:()=>n[qn]??e}}),n[qn]=e,n}var ZQ=new WeakMap;function QQ(e){let t=ZQ.get(e);return t||(t=e.parameters.includes(w)?e:y(...e.parameters,w),ZQ.set(e,t)),t}var $Q={character:void 0,authoritative:!0,callback:null};function e$(e){let{character:t,authoritative:n}=$Q;return t?e===t:n||pn(e,xn,`context`)===k.Client}function t$(e,t){e$(t)&&$Q.callback?.(e,wt(t))}function n$(e,t,n){let r=Dt(t),i=e[qn];if(!i)return;let{character:a,authoritative:o,callback:s}=$Q;$Q.character=e.rerunEntity,$Q.authoritative=e.authoritative,$Q.callback=n;try{dn(i,QQ(r),t$)}finally{$Q.character=a,$Q.authoritative=o,$Q.callback=s}}var r$=x(()=>[]),i$=y(U,xn),a$=y(CJ,xn);function o$(e,{input:t}){t&&(dn(e,i$,([e,{context:n}])=>{n===k.Client&&(e.buttons=t.buttons??0,eh(e.axes,t.axes),eh(e.vectors,t.vectors),eh(e.angles,t.angles),eh(e.changes,t.changes))}),s$(e,t))}function s$(e,t){let{edgeButtons:n}=Rm(e);t.buttons&&=(t.buttons&~n)>>>0,t.changes&&(t.changes.length=0)}function c$(e,{input:t}){if(!t)return;let n=Rm(e),r=nh(n,t,Ym.move),i=r.x,a=r.y,o=nh(n,t,Ym.jump);dn(e,a$,([e,{context:t}])=>{t===k.Client&&(e.steer=i,e.throttle=a,e.jump=o)})}var l$=60;function u$(e,t){return e.name||`systems[${t}]`}function d$(e){return[`recordPreviousTransforms`,...(e.get(r$)??[]).map(u$)]}var f$=x(()=>({now:()=>performance.now(),samples:[],steps:0,window:p$(0)}));function p$(e){return{totals:new Float64Array(e),worst:new Float64Array(e),steps:0}}function m$(e){let t=e.get(f$);if(!t)return[];let n=Math.min(t.steps,l$),r=d$(e);return t.samples.map((e,t)=>g$(r[t],e.subarray(0,n)))}function h$(e){let t=e.get(f$)?.window;if(!t||t.totals.length===0)return[];let n=d$(e),r=Array.from(t.totals,(e,r)=>({name:n[r],meanMilliseconds:t.steps>0?e/t.steps:0,worstMilliseconds:t.worst[r]}));return t.totals.fill(0),t.worst.fill(0),t.steps=0,r}function g$(e,t){return{name:e,meanMilliseconds:t.reduce((e,t)=>e+t,0)/Math.max(t.length,1),worstMilliseconds:Math.max(0,...t)}}var _$=x(()=>({report:({error:e})=>{throw e},streaks:new Map}));function v$(e){return e.get(_$)?.report}var y$=x(()=>new Map);function b$(e){return e.has(j)&&e.has(zn)}function x$(e,t,n,r){if(!r)return t(e,n);let{reads:i,guarded:a,checks:o}=r;if(o){o.beforeSystem(t);try{x$(e,t,n,{reads:i,guarded:a})}finally{o.afterSystem(t)}return}let s=i?.get(t);i&&!s&&i.set(t,s=new Set),a&&Jt(e);let c=Qt(s);try{t(e,n)}finally{Qt(c),a&&Xt()}}function S$(e,t){YQ(e)&&VR(e),C$(e,t),YQ(e)&&(rR(e),jR(e))}function C$(e,t){let n=XQ(e,t);ur(e).tick=n.tick+1;let r=e.get(y$),i=e.has(j),a=i&&Bn(e),o=i?a?e.get(xN)?.checks??null:AN(e):null;if(a&&Kt(e),!r)return w$(e,n,a||o?{guarded:a,checks:o}:void 0);let s=e.query;e.query=((...e)=>{let[t]=e;return $t(typeof t==`object`&&t&&`parameters`in t?t.parameters:e),s(...e)});try{w$(e,n,{reads:r,guarded:a,checks:o})}finally{e.query=s}}function w$(e,t,n){let r=e.get(r$)??[],i=e.get(f$),a=e.get(_$),o=n?.checks??null;if(qr(e,t),rL(e),Io(e,t),Wa(e),!i){lM(e),o?.beginStep();for(let i=0;i<r.length;i++)E$(e,r,i,t,n,a);o?.endStep(),Lo(e),Xr(e),Ga(e);return}i.samples.length!==r.length+1&&(i.samples=Array.from({length:r.length+1},()=>new Float64Array(l$)),i.steps=0,i.window=p$(r.length+1));let s=i.steps%l$,c=i.now();lM(e),o?.beginStep();let l=i.now();T$(i,0,s,l-c);for(let o=0;o<r.length;o++)c=l,E$(e,r,o,t,n,a),l=i.now(),T$(i,o+1,s,l-c);o?.endStep(),Lo(e),Xr(e),Ga(e),i.steps+=1,i.window.steps+=1}function T$(e,t,n,r){e.samples[t][n]=r;let i=e.window;i.totals[t]+=r,r>i.worst[t]&&(i.worst[t]=r)}function E$(e,t,n,r,i,a){let o=t[n];Jr(n,o);try{x$(e,o,r,i)}catch(t){if(WQ(e,t,u$(o,n),r.tick),!a)throw t;let i=(a.streaks.get(o)??0)+1;a.streaks.set(o,i),a.report({system:u$(o,n),tick:r.tick,streak:i,error:t});return}a&&a.streaks.size>0&&a.streaks.delete(o)}function D$(e,t){let n=Math.min(t,KQ),r=e+n,i=Math.floor(r/GQ);return{steps:i,frameSeconds:n,leftoverSeconds:r-i*GQ}}function O$(e){let t=e.get(Vi)??[],n={};for(let e of t)e.options!==void 0&&(n[e.name]=e.options);return{plugins:t.map(e=>e.name),systems:(e.get(r$)??[]).map(e=>e.name),options:n,inputs:[...Rm(e).entries],physics:xt(e),collisionLayers:[...oa(e)]}}function k$(e){return(e.get(r$)??[]).flatMap(e=>{let t=sZ(e);if(!t)return[];let{plugin:n,phase:r,runsOn:i,predicted:a,isEngine:o,replaces:s}=t;return[{name:e.name,plugin:n,phase:r,runsOn:i,predicted:a,isEngine:o,...s&&{replaces:s}}]})}export{IZ as $,uN as $a,Th as $c,Jo as $d,gi as $f,RR as $i,U as $l,PU as $n,vD as $o,_n as $p,zB as $r,G_ as $s,_J as $t,Ql as $u,wQ as A,oL as Aa,Hg as Ac,Xc as Ad,P as Af,iB as Ai,wm as Al,Ne as Am,kW as An,lM as Ao,A as Ap,TH as Ar,Xv as As,VY as At,Xf as Au,eQ as B,gI as Ba,mg as Bc,es as Bd,ji as Bf,pz as Bi,ym as Bl,OW as Bn,Lj as Bo,Fn as Bp,FV as Br,ov as Bs,vY as Bt,Qf as Bu,IQ as C,SL as Ca,Kg as Cc,Uc as Cd,Ba as Cf,fB as Ci,am as Cl,st as Cm,uG as Cn,KM as Co,zn as Cp,$H as Cr,ty as Cs,LX as Ct,Cp as Cu,DQ as D,cL as Da,Jg as Dc,Jc as Dd,Pa as Df,oB as Di,tm as Dl,it as Dm,YW as Dn,CM as Do,Gn as Dp,kH as Dr,Gv as Ds,uX as Dt,tp as Du,pQ as E,lL as Ea,Bg as Ec,Wc as Ed,Ea as Ef,Wz as Ei,um as El,et as Em,GW as En,bM as Eo,Un as Ep,xH as Er,Wv as Es,tX as Et,ep as Eu,yQ as F,KI as Fa,Lg as Fc,Qo as Fd,Zi as Ff,Pz as Fi,Rm as Fl,LW as Fn,tM as Fo,Mn as Fp,PH as Fr,Pv as Fs,BY as Ft,_p as Fu,KZ as G,WF as Ga,Vh as Gc,io as Gd,N as Gf,tz as Gi,Ap as Gl,$U as Gn,bj as Go,En as Gp,jV as Gr,Ov as Gs,OJ as Gt,Jd as Gu,QZ as H,zN as Ha,Zh as Hc,Yo as Hd,M as Hf,rz as Hi,Kp as Hl,TW as Hn,nj as Ho,kn as Hp,iH as Hr,lv as Hs,lY as Ht,hp as Hu,tQ as I,tL as Ia,Ng as Ic,ts as Id,Ji as If,Vz as Ii,Wm as Il,WW as In,eM as Io,Nn as Ip,NH as Ir,Fv as Is,kY as It,Gf as Iu,qZ as J,SN as Ja,Qh as Jc,_o as Jd,Fi as Jf,nz as Ji,zp as Jl,eW as Jn,tO as Jo,bn as Jp,SV as Jr,uv as Js,jJ as Jt,Zd as Ju,UZ as K,OP as Ka,Wh as Kc,go as Kd,Ni as Kf,ez as Ki,Up as Kl,ZU as Kn,oO as Ko,Dn as Kp,AV as Kr,jv as Ks,CJ as Kt,Yd as Ku,oQ as L,WI as La,Pg as Lc,ns as Ld,Hi as Lf,vz as Li,Um as Ll,zW as Ln,qj as Lo,On as Lp,nH as Lr,K_ as Ls,OY as Lt,Zf as Lu,gQ as M,FI as Ma,qg as Mc,wc as Md,ha as Mf,Hz as Mi,km as Ml,Me as Mm,UW as Mn,gM as Mo,xn as Mp,OH as Mr,Jv as Ms,eX as Mt,Jf as Mu,_Q as N,yI as Na,Yg as Nc,I as Nd,ma as Nf,Sz as Ni,Mm as Nl,Ae as Nm,VW as Nn,Jj as No,An as Np,FH as Nr,Bv as Ns,RY as Nt,yp as Nu,sQ as O,vL as Oa,Wg as Oc,Hc as Od,Ha as Of,Kz as Oi,em as Ol,Le as Om,qW as On,yM as Oo,Rn as Op,EH as Or,Yv as Os,iX as Ot,ap as Ou,vQ as P,nL as Pa,Xg as Pc,Cc as Pd,$i as Pf,Rz as Pi,Pm as Pl,je as Pm,BW as Pn,Uj as Po,wn as Pp,IH as Pr,Rv as Ps,zY as Pt,qf as Pu,GZ as Q,dN as Qa,Dh as Qc,Fo as Qd,yr as Qf,lR as Qi,Gp as Ql,IU as Qn,$D as Qo,gn as Qp,QB as Qr,fv as Qs,SJ as Qt,tu as Qu,$Z as R,eL as Ra,jg as Rc,rs as Rd,Vi as Rf,yz as Ri,sm as Rl,NW as Rn,Vj as Ro,Cn as Rp,QV as Rr,bv as Rs,DY as Rt,Sp as Ru,FQ as S,CL as Sa,Zg as Sc,Vc as Sd,Ca as Sf,Qz as Si,nm as Sl,ut as Sm,fG as Sn,WM as So,Ln as Sp,UH as Sr,gy as Ss,_X as St,lp as Su,ZZ as T,jL as Ta,zg as Tc,Kc as Td,Da as Tf,uB as Ti,Vm as Tl,C as Tm,pG as Tn,xM as To,Vn as Tp,CH as Tr,Vv as Ts,kX as Tt,xp as Tu,XZ as U,AP as Ua,Hh as Uc,Xo as Ud,Bi as Uf,XR as Ui,Jp as Ul,wW as Un,cj as Uo,Tn as Up,OV as Ur,Av as Us,cY as Ut,rp as Uu,xQ as V,qF as Va,Xh as Vc,$o as Vd,Pi as Vf,qR as Vi,Xp as Vl,IW as Vn,tj as Vo,k as Vp,rH as Vr,cv as Vs,yY as Vt,gp as Vu,LZ as W,gP as Wa,Gh as Wc,Zo as Wd,Ri as Wf,$R as Wi,Vp as Wl,EW as Wn,Ej as Wo,O as Wp,kV as Wr,kv as Ws,iY as Wt,up as Wu,JZ as X,DN as Xa,Uh as Xc,F as Xd,gr as Xf,WR as Xi,Fp as Xl,NU as Xn,nA as Xo,mn as Xp,rV as Xr,pv as Xs,kJ as Xt,zd as Xu,zZ as Y,CN as Ya,Kh as Yc,ro as Yd,hr as Yf,KR as Yi,Rp as Yl,LU as Yn,SO as Yo,yn as Yp,eV as Yr,mv as Ys,AJ as Yt,Wf as Yu,YZ as Z,kN as Za,Yh as Zc,Io as Zd,wr as Zf,cR as Zi,Wp as Zl,DU as Zn,jk as Zo,vn as Zp,aV as Zr,hv as Zs,wJ as Zt,ru as Zu,g$ as _,kL as _a,s_ as _c,ll as _d,Xa as _f,mB as _i,Qm as _l,Ct as _m,TK as _n,JM as _o,sr as _p,HH as _r,fy as _s,YX as _t,mp as _u,r$ as a,TR as aa,k_ as ac,zl as ad,wo as af,pV as ai,xh as al,Kt as am,gq as an,lN as ao,ki as ap,OU as ar,lw as as,sZ as at,Lp as au,VQ as b,EL as ba,$g as bc,gl as bd,qa as bf,tB as bi,im as bl,ct as bm,YG as bn,AM as bo,rr as bp,RH as br,vy as bs,XX as bt,cp as bu,qQ as c,WL as ca,m_ as cc,Ol as cd,ao as cf,iV as ci,vh as cl,Ot as cm,mq as cn,iN as co,Nr as cp,EU as cr,Ey as cs,WX as ct,Bp as cu,b$ as d,ZL as da,f_ as dc,el as dd,qo as df,AB as di,eh as dl,At as dm,PK as dn,tN as do,xi as dp,mU as dr,Hy as ds,VX as dt,Tp as du,SR as ea,V_ as ec,Yl as ed,yo as ef,GB as ei,Rh as el,fn as em,jq as en,pN as eo,ei as ep,wU as er,CT as es,FZ as et,W as eu,KQ as f,HL as fa,S_ as fc,al as fd,Uo as ff,kB as fi,nh as fl,Et as fm,AK as fn,UM as fo,Zr as fp,gU as fr,ab as fs,BX as ft,vp as fu,S$ as g,DL as ga,a_ as gc,ul as gd,$a as gf,gB as gi,Ym as gl,St as gm,CK as gn,NM as go,cr as gp,XH as gr,xy as gs,tZ as gt,fp as gu,XQ as h,NL as ha,i_ as hc,R as hd,Za as hf,_B as hi,gh as hl,wt as hm,wK as hn,HM as ho,j as hp,BH as hr,ay as hs,KX as ht,pp as hu,y$ as i,AR as ia,O_ as ic,Ll as id,ho as if,JB as ii,kh as il,Jt as im,Cq as in,cN as io,bi as ip,SU as ir,cw as is,fZ as it,Ip as iu,hQ as j,bI as ja,Vg as jc,Rc as jd,ga as jf,Iz as ji,lm as jl,ke as jm,HW as jn,_M as jo,Hn as jp,DH as jr,qv as js,ZY as jt,Yf as ju,MQ as k,dL as ka,Ug as kc,qc as kd,_a as kf,Yz as ki,xm as kl,Be as km,DW as kn,TM as ko,Kn as kp,wH as kr,Zv as ks,WY as kt,bp as ku,GQ as l,JL as la,b_ as lc,Tl as ld,xo as lf,mV as li,yh as ll,kt as lm,pq as ln,eN as lo,Ir as lp,aU as lr,Ty as ls,nZ as lt,kp as lu,m$ as m,ML as ma,u_ as mc,Zc as md,no as mf,wB as mi,fh as ml,Tt as mm,DK as mn,qM as mo,fr as mp,eU as mr,ny as ms,aZ as mt,wp as mu,k$ as n,DR as na,C_ as nc,kl as nd,Lo as nf,PB as ni,Ah as nl,pn as nm,vq as nn,mN as no,hi as np,xU as nr,Nw as ns,lZ as nt,H as nu,D$ as o,wR as oa,D_ as oc,Dl as od,oo as of,oV as oi,jh as ol,Xt as om,yq as on,aN as oo,pi as op,FU as or,ZC as os,eZ as ot,Mp as ou,v$ as p,VL as pa,l_ as pc,il as pd,Po as pf,DB as pi,lh as pl,Mt as pm,OK as pn,FM as po,dr as pp,QH as pr,Gy as ps,QX as pt,Kf as pu,WZ as q,xN as qa,$h as qc,lo as qd,Mi as qf,ZR as qi,Hp as ql,QU as qn,sO as qo,Sn as qp,DV as qr,dv as qs,TJ as qt,Xd as qu,f$ as r,kR as ra,A_ as rc,Il as rd,No as rf,KB as ri,Lh as rl,dn as rm,kq as rn,oN as ro,xr as rp,TU as rr,$C as rs,cZ as rt,jp as ru,o$ as s,zR as sa,x_ as sc,El as sd,Go as sf,BB as si,Eh as sl,E as sm,UK as sn,rN as so,Pr as sp,MU as sr,Dy as ss,JX as st,Dp as su,O$ as t,ER as ta,W_ as tc,Al as td,bo as tf,WB as ti,Sh as tl,D as tm,_q as tn,fN as to,br as tp,bU as tr,bT as ts,jZ as tt,Op as tu,YQ as u,tR as ua,p_ as uc,tl as ud,fo as uf,ZB as ui,_h as ul,jt as um,jK as un,$M as uo,fi as up,iU as ur,Sy as us,GX as ut,Ep as uu,h$ as v,yL as va,Qg as vc,pl as vd,Ya as vf,pB as vi,$p as vl,vt as vm,nK as vn,OM as vo,ir as vp,ZH as vr,my as vs,UX as vt,dp as vu,PQ as w,TL as wa,Rg as wc,Gc as wd,Ra as wf,Gz as wi,Om as wl,ft as wm,mG as wn,vM as wo,In as wp,tU as wr,Qv as ws,TX as wt,V as wu,RQ as x,bL as xa,t_ as xc,L as xd,Sa as xf,rB as xi,om as xl,w as xm,wG as xn,DM as xo,Wn as xp,VH as xr,by as xs,mX as xt,sp as xu,HQ as y,xL as ya,n_ as yc,hl as yd,Ja as yf,qz as yi,cm as yl,T as ym,oK as yn,GM as yo,or as yp,zH as yr,py as ys,$X as yt,op as yu,mQ as z,qI as za,Ag as zc,is as zd,Li as zf,bz as zi,rm as zl,PW as zn,kj as zo,jn as zp,$V as zr,sv as zs,EY as zt,ip as zu};