@needle-tools/engine 4.11.4 → 4.11.5-next.53316bf

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 (164) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/components.needle.json +1 -1
  3. package/dist/generateMeshBVH.worker-mO20N_b8.js +21 -0
  4. package/dist/{gltf-progressive-GwdQV1Qx.umd.cjs → gltf-progressive-DWcmTMCh.umd.cjs} +1 -1
  5. package/dist/{gltf-progressive-CftVUJy3.min.js → gltf-progressive-DZrY8VT6.min.js} +2 -2
  6. package/dist/{gltf-progressive-BvlZQAkt.js → gltf-progressive-DgYz5BYa.js} +19 -19
  7. package/dist/loader.worker-Dip-PthR.js +23 -0
  8. package/dist/{needle-engine.bundle-CQdk7IvU.min.js → needle-engine.bundle-BR5nmLCs.min.js} +155 -160
  9. package/dist/{needle-engine.bundle-BxK1-fWD.umd.cjs → needle-engine.bundle-Cb9jKt1y.umd.cjs} +154 -159
  10. package/dist/{needle-engine.bundle-DmMrUPFQ.js → needle-engine.bundle-D6G3NMe4.js} +5964 -5815
  11. package/dist/needle-engine.d.ts +17848 -1
  12. package/dist/needle-engine.js +336 -335
  13. package/dist/needle-engine.min.js +1 -1
  14. package/dist/needle-engine.umd.cjs +1 -1
  15. package/dist/{postprocessing-CJC0Npcd.js → postprocessing-BTW9pD_s.js} +1822 -1723
  16. package/dist/{postprocessing-DrM4PWU3.umd.cjs → postprocessing-CMgoN5t5.umd.cjs} +229 -158
  17. package/dist/{postprocessing-l7zsdO_Q.min.js → postprocessing-DYDtB188.min.js} +227 -156
  18. package/dist/rapier-B3oL1ap-.js +5217 -0
  19. package/dist/rapier-DJ-luMxr.min.js +1 -0
  20. package/dist/rapier-DQltNJbN.umd.cjs +1 -0
  21. package/dist/{three-BDW9I486.min.js → three-B7CT31Bt.min.js} +1 -5
  22. package/dist/{three-MHVqtJYj.js → three-DfMvBzXi.js} +0 -5
  23. package/dist/{three-examples-CgwGHSgz.umd.cjs → three-examples-CsW4_6LI.umd.cjs} +2 -7
  24. package/dist/{three-examples-fvEPSC8L.min.js → three-examples-D1P7eEhn.min.js} +2 -7
  25. package/dist/{three-examples-C5Ht-QFN.js → three-examples-D1SK93ek.js} +1 -7
  26. package/dist/{three-mesh-ui-BjWTTk1R.js → three-mesh-ui-C_uSB5dD.js} +1 -1
  27. package/dist/{three-mesh-ui-Bm32sS2a.umd.cjs → three-mesh-ui-DpATDXwU.umd.cjs} +1 -1
  28. package/dist/{three-mesh-ui-CLdkp21K.min.js → three-mesh-ui-LQ44s0AL.min.js} +1 -1
  29. package/dist/{three-iFaDq9U3.umd.cjs → three-qj71I7J3.umd.cjs} +2 -6
  30. package/dist/{vendor-CsyK1CFs.min.js → vendor-BKGa4GE0.min.js} +34 -39
  31. package/dist/{vendor-petGQl0N.js → vendor-D0zoswDa.js} +1626 -1605
  32. package/dist/{vendor-6kAXU6fm.umd.cjs → vendor-UCpFAwt1.umd.cjs} +30 -35
  33. package/lib/engine/api.d.ts +1 -1
  34. package/lib/engine/api.js +1 -1
  35. package/lib/engine/api.js.map +1 -1
  36. package/lib/engine/debug/debug_spector.d.ts +16 -0
  37. package/lib/engine/debug/debug_spector.js +28 -0
  38. package/lib/engine/debug/debug_spector.js.map +1 -0
  39. package/lib/engine/engine_addressables.d.ts +74 -11
  40. package/lib/engine/engine_addressables.js +74 -11
  41. package/lib/engine/engine_addressables.js.map +1 -1
  42. package/lib/engine/engine_application.d.ts +7 -0
  43. package/lib/engine/engine_application.js +8 -1
  44. package/lib/engine/engine_application.js.map +1 -1
  45. package/lib/engine/engine_camera.fit.d.ts +48 -3
  46. package/lib/engine/engine_camera.fit.js +29 -0
  47. package/lib/engine/engine_camera.fit.js.map +1 -1
  48. package/lib/engine/engine_context.d.ts +33 -8
  49. package/lib/engine/engine_context.js +47 -8
  50. package/lib/engine/engine_context.js.map +1 -1
  51. package/lib/engine/engine_loaders.d.ts +0 -6
  52. package/lib/engine/engine_loaders.js +5 -5
  53. package/lib/engine/engine_loaders.js.map +1 -1
  54. package/lib/engine/engine_physics.js +6 -2
  55. package/lib/engine/engine_physics.js.map +1 -1
  56. package/lib/engine/engine_physics_rapier.d.ts +11 -2
  57. package/lib/engine/engine_physics_rapier.js +9 -0
  58. package/lib/engine/engine_physics_rapier.js.map +1 -1
  59. package/lib/engine/engine_scenelighting.d.ts +12 -1
  60. package/lib/engine/engine_scenelighting.js +21 -1
  61. package/lib/engine/engine_scenelighting.js.map +1 -1
  62. package/lib/engine/engine_texture.d.ts +1 -1
  63. package/lib/engine/engine_tonemapping.d.ts +1 -1
  64. package/lib/engine/engine_types.d.ts +16 -0
  65. package/lib/engine/engine_typestore.d.ts +1 -0
  66. package/lib/engine/engine_typestore.js +5 -6
  67. package/lib/engine/engine_typestore.js.map +1 -1
  68. package/lib/engine/engine_utils_qrcode.js +1 -1
  69. package/lib/engine/engine_utils_qrcode.js.map +1 -1
  70. package/lib/engine/extensions/NEEDLE_components.d.ts +4 -4
  71. package/lib/engine/extensions/NEEDLE_components.js +36 -17
  72. package/lib/engine/extensions/NEEDLE_components.js.map +1 -1
  73. package/lib/engine/extensions/NEEDLE_lightmaps.js +2 -2
  74. package/lib/engine/extensions/NEEDLE_lightmaps.js.map +1 -1
  75. package/lib/engine/extensions/extensions.d.ts +2 -2
  76. package/lib/engine/extensions/extensions.js +11 -5
  77. package/lib/engine/extensions/extensions.js.map +1 -1
  78. package/lib/engine/webcomponents/buttons.d.ts +3 -1
  79. package/lib/engine/webcomponents/buttons.js +3 -1
  80. package/lib/engine/webcomponents/buttons.js.map +1 -1
  81. package/lib/engine/webcomponents/needle menu/needle-menu.d.ts +39 -2
  82. package/lib/engine/webcomponents/needle menu/needle-menu.js +39 -2
  83. package/lib/engine/webcomponents/needle menu/needle-menu.js.map +1 -1
  84. package/lib/engine/webcomponents/needle-engine.attributes.d.ts +1 -0
  85. package/lib/engine/webcomponents/needle-engine.d.ts +1 -0
  86. package/lib/engine/webcomponents/needle-engine.js +3 -0
  87. package/lib/engine/webcomponents/needle-engine.js.map +1 -1
  88. package/lib/engine/xr/NeedleXRSession.js +2 -1
  89. package/lib/engine/xr/NeedleXRSession.js.map +1 -1
  90. package/lib/engine-components/Component.d.ts +5 -0
  91. package/lib/engine-components/Component.js +7 -0
  92. package/lib/engine-components/Component.js.map +1 -1
  93. package/lib/engine-components/ReflectionProbe.js +16 -10
  94. package/lib/engine-components/ReflectionProbe.js.map +1 -1
  95. package/lib/engine-components/Renderer.js +16 -42
  96. package/lib/engine-components/Renderer.js.map +1 -1
  97. package/lib/engine-components/RendererInstancing.d.ts +5 -3
  98. package/lib/engine-components/RendererInstancing.js +64 -31
  99. package/lib/engine-components/RendererInstancing.js.map +1 -1
  100. package/lib/engine-components/RendererLightmap.d.ts +1 -0
  101. package/lib/engine-components/RendererLightmap.js +24 -18
  102. package/lib/engine-components/RendererLightmap.js.map +1 -1
  103. package/lib/engine-components/Skybox.d.ts +15 -5
  104. package/lib/engine-components/Skybox.js +37 -25
  105. package/lib/engine-components/Skybox.js.map +1 -1
  106. package/lib/engine-components/export/usdz/USDZExporter.d.ts +24 -3
  107. package/lib/engine-components/export/usdz/USDZExporter.js +36 -2
  108. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  109. package/lib/engine-components/timeline/PlayableDirector.d.ts +2 -1
  110. package/lib/engine-components/timeline/PlayableDirector.js +16 -9
  111. package/lib/engine-components/timeline/PlayableDirector.js.map +1 -1
  112. package/lib/engine-components/web/CursorFollow.d.ts +1 -0
  113. package/lib/engine-components/web/CursorFollow.js +2 -0
  114. package/lib/engine-components/web/CursorFollow.js.map +1 -1
  115. package/lib/engine-components/webxr/WebXR.js +4 -0
  116. package/lib/engine-components/webxr/WebXR.js.map +1 -1
  117. package/lib/engine-components/webxr/controllers/XRControllerModel.js +1 -1
  118. package/lib/engine-components/webxr/controllers/XRControllerModel.js.map +1 -1
  119. package/lib/needle-engine.js +2 -1
  120. package/lib/needle-engine.js.map +1 -1
  121. package/package.json +15 -12
  122. package/plugins/types/needleConfig.d.ts +1 -1
  123. package/plugins/types/next.d.ts +1 -1
  124. package/plugins/types/userconfig.d.ts +1 -1
  125. package/src/engine/api.ts +1 -1
  126. package/src/engine/debug/debug_spector.ts +43 -0
  127. package/src/engine/engine_addressables.ts +75 -11
  128. package/src/engine/engine_application.ts +16 -1
  129. package/src/engine/engine_camera.fit.ts +49 -4
  130. package/src/engine/engine_context.ts +59 -10
  131. package/src/engine/engine_loaders.ts +6 -6
  132. package/src/engine/engine_physics.ts +6 -2
  133. package/src/engine/engine_physics_rapier.ts +11 -2
  134. package/src/engine/engine_scenelighting.ts +30 -8
  135. package/src/engine/engine_texture.ts +1 -1
  136. package/src/engine/engine_tonemapping.ts +1 -1
  137. package/src/engine/engine_types.ts +17 -0
  138. package/src/engine/engine_typestore.ts +5 -6
  139. package/src/engine/engine_utils_qrcode.ts +1 -1
  140. package/src/engine/extensions/NEEDLE_components.ts +47 -26
  141. package/src/engine/extensions/NEEDLE_lightmaps.ts +2 -2
  142. package/src/engine/extensions/extensions.ts +11 -5
  143. package/src/engine/webcomponents/buttons.ts +3 -1
  144. package/src/engine/webcomponents/needle menu/needle-menu.ts +40 -3
  145. package/src/engine/webcomponents/needle-engine.attributes.ts +2 -1
  146. package/src/engine/webcomponents/needle-engine.ts +4 -0
  147. package/src/engine/xr/NeedleXRSession.ts +3 -1
  148. package/src/engine-components/Component.ts +9 -1
  149. package/src/engine-components/ReflectionProbe.ts +18 -10
  150. package/src/engine-components/Renderer.ts +16 -44
  151. package/src/engine-components/RendererInstancing.ts +69 -33
  152. package/src/engine-components/RendererLightmap.ts +27 -17
  153. package/src/engine-components/Skybox.ts +47 -36
  154. package/src/engine-components/export/usdz/USDZExporter.ts +52 -5
  155. package/src/engine-components/timeline/PlayableDirector.ts +16 -10
  156. package/src/engine-components/web/CursorFollow.ts +3 -0
  157. package/src/engine-components/webxr/WebXR.ts +4 -0
  158. package/src/engine-components/webxr/controllers/XRControllerModel.ts +1 -1
  159. package/src/needle-engine.ts +4 -2
  160. package/dist/generateMeshBVH.worker-B9bjdr6J.js +0 -25
  161. package/dist/loader.worker-CiTwpNPW.js +0 -27
  162. package/dist/rapier-BqdcSmKY.umd.cjs +0 -1
  163. package/dist/rapier-Cg3w3nFI.min.js +0 -1
  164. package/dist/rapier-sU12SWAs.js +0 -5217
@@ -1,4 +1,4 @@
1
- import{PlaneGeometry as Zo,ShaderChunk as Ll,Object3D as Ko,Layers as ar,MeshBasicMaterial as Qo,DoubleSide as ms,AdditiveBlending as $o,InstancedBufferAttribute as pn,DynamicDrawUsage as Xe,InstancedBufferGeometry as Fl,Uniform$1 as Ct,ShaderMaterial as ys,BufferGeometry as Kn,BufferAttribute as ot,Mesh as gs,MeshStandardMaterial as Vl,MeshPhysicalMaterial as jl,Triangle as fn,Vector3 as q,Plane as ea,Line3 as Wt,Vector2 as en,Matrix4 as Et,Box3 as It,BackSide as Jl,REVISION as ta,FrontSide as na,Sphere as Gl,BatchedMesh as Wl,Ray as Hl,Matrix3 as ql,Vector4 as vs,SkinnedMesh as Xl,InterpolateDiscrete as Yl,InterpolateLinear as ia,AnimationClip as Zl,QuaternionKeyframeTrack as Kl,ColorKeyframeTrack as Ql,VectorKeyframeTrack as $l,BooleanKeyframeTrack as eu,NumberKeyframeTrack as tu,PropertyBinding as ra}from"./three-BDW9I486.min.js";const Ae={ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function sa(r){const e=await fetch(r);if(e.ok)return e.json();throw new Error(e.statusText)}async function nu(r){return await sa(`${r}/profilesList.json`)}async function iu(r,e,t=null,n=!0){if(!r)throw new Error("No xrInputSource supplied");const i=await nu(e);let s;if(r.profiles.some(c=>{const l=i[c];return l&&(s={profileId:c,profilePath:`${e}/${l.path}`,deprecated:!!l.deprecated}),!!s}),!s){if(!t)throw new Error("No matching profile name found");const c=i[t];if(!c)throw new Error(`No matching profile name found and default profile "${t}" missing.`);s={profileId:t,profilePath:`${e}/${c.path}`,deprecated:!!c.deprecated}}const a=await sa(s.profilePath);let o;if(n){let c;if(r.handedness==="any"?c=a.layouts[Object.keys(a.layouts)[0]]:c=a.layouts[r.handedness],!c)throw new Error(`No matching handedness, ${r.handedness}, in profile ${s.profileId}`);c.assetPath&&(o=s.profilePath.replace("profile.json",c.assetPath))}return{profile:a,assetPath:o}}const ru={xAxis:0,yAxis:0,button:0,state:Ae.ComponentState.DEFAULT};function su(r=0,e=0){let t=r,n=e;if(Math.sqrt(r*r+e*e)>1){const i=Math.atan2(e,r);t=Math.cos(i),n=Math.sin(i)}return{normalizedXAxis:t*.5+.5,normalizedYAxis:n*.5+.5}}class ou{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Ae.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(ru)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:i}){const{normalizedXAxis:s,normalizedYAxis:a}=su(e,t);switch(this.componentProperty){case Ae.ComponentProperty.X_AXIS:this.value=this.states.includes(i)?s:.5;break;case Ae.ComponentProperty.Y_AXIS:this.value=this.states.includes(i)?a:.5;break;case Ae.ComponentProperty.BUTTON:this.value=this.states.includes(i)?n:0;break;case Ae.ComponentProperty.STATE:this.valueNodeProperty===Ae.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(i):this.value=this.states.includes(i)?1:0;break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}}class au{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw new Error("Invalid arguments supplied");this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(n=>{const i=new ou(t.visualResponses[n]);this.visualResponses[n]=i}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Ae.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=Ae.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){const t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=Ae.ComponentState.PRESSED:(t.touched||this.values.button>Ae.ButtonTouchThreshold)&&(this.values.state=Ae.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Ae.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Ae.AxisTouchThreshold&&(this.values.state=Ae.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Ae.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Ae.AxisTouchThreshold&&(this.values.state=Ae.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(t=>{t.updateFromComponent(this.values)})}}class cu{constructor(e,t,n){if(!e)throw new Error("No xrInputSource supplied");if(!t)throw new Error("No profile supplied");this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(i=>{const s=this.layoutDescription.components[i];this.components[i]=new au(i,s)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}}const Ss=2,zt=4,Ht=4,oa=4,tn=new Int32Array(2),aa=new Float32Array(tn.buffer),ca=new Float64Array(tn.buffer),cr=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;class Qt{constructor(e,t){this.low=e|0,this.high=t|0}static create(e,t){return e==0&&t==0?Qt.ZERO:new Qt(e,t)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}}Qt.ZERO=new Qt(0,0);var bs;(function(r){r[r.UTF8_BYTES=1]="UTF8_BYTES",r[r.UTF16_STRING=2]="UTF16_STRING"})(bs||(bs={}));class wi{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new wi(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Qt(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Qt(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return tn[0]=this.readInt32(e),aa[0]}readFloat64(e){return tn[cr?0:1]=this.readInt32(e),tn[cr?1:0]=this.readInt32(e+4),ca[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){aa[0]=t,this.writeInt32(e,tn[0])}writeFloat64(e,t){ca[0]=t,this.writeInt32(e,tn[cr?0:1]),this.writeInt32(e+4,tn[cr?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+zt+Ht)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<Ht;t++)e+=String.fromCharCode(this.readInt8(this.position_+zt+t));return e}__offset(e,t){const n=e-this.readInt32(e);return t<this.readInt16(n)?this.readInt16(n+t):0}__union(e,t){return e.bb_pos=t+this.readInt32(t),e.bb=this,e}__string(e,t){e+=this.readInt32(e);const n=this.readInt32(e);let i="",s=0;if(e+=zt,t===bs.UTF8_BYTES)return this.bytes_.subarray(e,e+n);for(;s<n;){let a;const o=this.readUint8(e+s++);if(o<192)a=o;else{const c=this.readUint8(e+s++);if(o<224)a=(o&31)<<6|c&63;else{const l=this.readUint8(e+s++);if(o<240)a=(o&15)<<12|(c&63)<<6|l&63;else{const u=this.readUint8(e+s++);a=(o&7)<<18|(c&63)<<12|(l&63)<<6|u&63}}}a<65536?i+=String.fromCharCode(a):(a-=65536,i+=String.fromCharCode((a>>10)+55296,(a&1023)+56320))}return i}__union_with_string(e,t){return typeof e=="string"?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+zt}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=Ht)throw new Error("FlatBuffers: file identifier must be length "+Ht);for(let t=0;t<Ht;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+zt+t))return!1;return!0}createLong(e,t){return Qt.create(e,t)}createScalarList(e,t){const n=[];for(let i=0;i<t;++i)e(i)!==null&&n.push(e(i));return n}createObjList(e,t){const n=[];for(let i=0;i<t;++i){const s=e(i);s!==null&&n.push(s.unpack())}return n}}class Mo{constructor(e){this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null;let t;e?t=e:t=1024,this.bb=wi.allocate(t),this.space=t}clear(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null}forceDefaults(e){this.force_defaults=e}dataBuffer(){return this.bb}asUint8Array(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())}prep(e,t){e>this.minalign&&(this.minalign=e);const n=~(this.bb.capacity()-this.space+t)+1&e-1;for(;this.space<n+e+t;){const i=this.bb.capacity();this.bb=Mo.growByteBuffer(this.bb),this.space+=this.bb.capacity()-i}this.pad(n)}pad(e){for(let t=0;t<e;t++)this.bb.writeInt8(--this.space,0)}writeInt8(e){this.bb.writeInt8(this.space-=1,e)}writeInt16(e){this.bb.writeInt16(this.space-=2,e)}writeInt32(e){this.bb.writeInt32(this.space-=4,e)}writeInt64(e){this.bb.writeInt64(this.space-=8,e)}writeFloat32(e){this.bb.writeFloat32(this.space-=4,e)}writeFloat64(e){this.bb.writeFloat64(this.space-=8,e)}addInt8(e){this.prep(1,0),this.writeInt8(e)}addInt16(e){this.prep(2,0),this.writeInt16(e)}addInt32(e){this.prep(4,0),this.writeInt32(e)}addInt64(e){this.prep(8,0),this.writeInt64(e)}addFloat32(e){this.prep(4,0),this.writeFloat32(e)}addFloat64(e){this.prep(8,0),this.writeFloat64(e)}addFieldInt8(e,t,n){(this.force_defaults||t!=n)&&(this.addInt8(t),this.slot(e))}addFieldInt16(e,t,n){(this.force_defaults||t!=n)&&(this.addInt16(t),this.slot(e))}addFieldInt32(e,t,n){(this.force_defaults||t!=n)&&(this.addInt32(t),this.slot(e))}addFieldInt64(e,t,n){(this.force_defaults||!t.equals(n))&&(this.addInt64(t),this.slot(e))}addFieldFloat32(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat32(t),this.slot(e))}addFieldFloat64(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat64(t),this.slot(e))}addFieldOffset(e,t,n){(this.force_defaults||t!=n)&&(this.addOffset(t),this.slot(e))}addFieldStruct(e,t,n){t!=n&&(this.nested(t),this.slot(e))}nested(e){if(e!=this.offset())throw new Error("FlatBuffers: struct must be serialized inline.")}notNested(){if(this.isNested)throw new Error("FlatBuffers: object serialization must not be nested.")}slot(e){this.vtable!==null&&(this.vtable[e]=this.offset())}offset(){return this.bb.capacity()-this.space}static growByteBuffer(e){const t=e.capacity();if(t&3221225472)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");const n=t<<1,i=wi.allocate(n);return i.setPosition(n-t),i.bytes().set(e.bytes(),n-t),i}addOffset(e){this.prep(zt,0),this.writeInt32(this.offset()-e+zt)}startObject(e){this.notNested(),this.vtable==null&&(this.vtable=[]),this.vtable_in_use=e;for(let t=0;t<e;t++)this.vtable[t]=0;this.isNested=!0,this.object_start=this.offset()}endObject(){if(this.vtable==null||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);const e=this.offset();let t=this.vtable_in_use-1;for(;t>=0&&this.vtable[t]==0;t--);const n=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]!=0?e-this.vtable[t]:0);const i=2;this.addInt16(e-this.object_start);const s=(n+i)*Ss;this.addInt16(s);let a=0;const o=this.space;e:for(t=0;t<this.vtables.length;t++){const c=this.bb.capacity()-this.vtables[t];if(s==this.bb.readInt16(c)){for(let l=Ss;l<s;l+=Ss)if(this.bb.readInt16(o+l)!=this.bb.readInt16(c+l))continue e;a=this.vtables[t];break}}return a?(this.space=this.bb.capacity()-e,this.bb.writeInt32(this.space,a-e)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-e,this.offset()-e)),this.isNested=!1,e}finish(e,t,n){const i=n?oa:0;if(t){const s=t;if(this.prep(this.minalign,zt+Ht+i),s.length!=Ht)throw new Error("FlatBuffers: file identifier must be length "+Ht);for(let a=Ht-1;a>=0;a--)this.writeInt8(s.charCodeAt(a))}this.prep(this.minalign,zt+i),this.addOffset(e),i&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){const n=this.bb.capacity()-e,i=n-this.bb.readInt32(n);if(this.bb.readInt16(i+t)==0)throw new Error("FlatBuffers: field "+t+" must be set")}startVector(e,t,n){this.notNested(),this.vector_num_elems=t,this.prep(zt,e*t),this.prep(n,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(e))return this.string_maps.get(e);const t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let n=0;for(;n<e.length;){let i;const s=e.charCodeAt(n++);if(s<55296||s>=56320)i=s;else{const a=e.charCodeAt(n++);i=(s<<10)+a+-56613888}i<128?t.push(i):(i<2048?t.push(i>>6&31|192):(i<65536?t.push(i>>12&15|224):t.push(i>>18&7|240,i>>12&63|128),t.push(i>>6&63|128)),t.push(i&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let n=0,i=this.space,s=this.bb.bytes();n<t.length;n++)s[i++]=t[n];return this.endVector()}createLong(e,t){return Qt.create(e,t)}createObjectOffset(e){return e===null?0:typeof e=="string"?this.createString(e):e.pack(this)}createObjectOffsetList(e){const t=[];for(let n=0;n<e.length;++n){const i=e[n];if(i!==null)t.push(this.createObjectOffset(i));else throw new Error("FlatBuffers: Argument for createObjectOffsetList cannot contain null.")}return t}createStructOffsetList(e,t){return t(this,e.length),this.createObjectOffsetList(e),this.endVector()}}function lr(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var la={exports:{}},ua;function ha(){return ua||(ua=1,function(r){var e={};e.useBlobBuilder=function(){try{return new Blob([]),!1}catch{return!0}}(),e.useArrayBufferView=!e.useBlobBuilder&&function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}}(),r.exports.binaryFeatures=e;var t=r.exports.BlobBuilder;typeof window<"u"&&(t=r.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder);function n(){this._pieces=[],this._parts=[]}n.prototype.append=function(i){typeof i=="number"?this._pieces.push(i):(this.flush(),this._parts.push(i))},n.prototype.flush=function(){if(this._pieces.length>0){var i=new Uint8Array(this._pieces);e.useArrayBufferView||(i=i.buffer),this._parts.push(i),this._pieces=[]}},n.prototype.getBuffer=function(){if(this.flush(),e.useBlobBuilder){for(var i=new t,s=0,a=this._parts.length;s<a;s++)i.append(this._parts[s]);return i.getBlob()}else return new Blob(this._parts)},r.exports.BufferBuilder=n}(la)),la.exports}var xs,da;function lu(){if(da)return xs;da=1;var r=ha().BufferBuilder,e=ha().binaryFeatures,t={unpack:function(o){var c=new n(o);return c.unpack()},pack:function(o){var c=new i;c.pack(o);var l=c.getBuffer();return l}};xs=t;function n(o){this.index=0,this.dataBuffer=o,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}n.prototype.unpack=function(){var o=this.unpack_uint8();if(o<128)return o;if((o^224)<32)return(o^224)-32;var c;if((c=o^160)<=15)return this.unpack_raw(c);if((c=o^176)<=15)return this.unpack_string(c);if((c=o^144)<=15)return this.unpack_array(c);if((c=o^128)<=15)return this.unpack_map(c);switch(o){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return c=this.unpack_uint16(),this.unpack_string(c);case 217:return c=this.unpack_uint32(),this.unpack_string(c);case 218:return c=this.unpack_uint16(),this.unpack_raw(c);case 219:return c=this.unpack_uint32(),this.unpack_raw(c);case 220:return c=this.unpack_uint16(),this.unpack_array(c);case 221:return c=this.unpack_uint32(),this.unpack_array(c);case 222:return c=this.unpack_uint16(),this.unpack_map(c);case 223:return c=this.unpack_uint32(),this.unpack_map(c)}},n.prototype.unpack_uint8=function(){var o=this.dataView[this.index]&255;return this.index++,o},n.prototype.unpack_uint16=function(){var o=this.read(2),c=(o[0]&255)*256+(o[1]&255);return this.index+=2,c},n.prototype.unpack_uint32=function(){var o=this.read(4),c=((o[0]*256+o[1])*256+o[2])*256+o[3];return this.index+=4,c},n.prototype.unpack_uint64=function(){var o=this.read(8),c=((((((o[0]*256+o[1])*256+o[2])*256+o[3])*256+o[4])*256+o[5])*256+o[6])*256+o[7];return this.index+=8,c},n.prototype.unpack_int8=function(){var o=this.unpack_uint8();return o<128?o:o-256},n.prototype.unpack_int16=function(){var o=this.unpack_uint16();return o<32768?o:o-65536},n.prototype.unpack_int32=function(){var o=this.unpack_uint32();return o<Math.pow(2,31)?o:o-Math.pow(2,32)},n.prototype.unpack_int64=function(){var o=this.unpack_uint64();return o<Math.pow(2,63)?o:o-Math.pow(2,64)},n.prototype.unpack_raw=function(o){if(this.length<this.index+o)throw new Error("BinaryPackFailure: index is out of range "+this.index+" "+o+" "+this.length);var c=this.dataBuffer.slice(this.index,this.index+o);return this.index+=o,c},n.prototype.unpack_string=function(o){for(var c=this.read(o),l=0,u="",p,m;l<o;)p=c[l],p<128?(u+=String.fromCharCode(p),l++):(p^192)<32?(m=(p^192)<<6|c[l+1]&63,u+=String.fromCharCode(m),l+=2):(m=(p&15)<<12|(c[l+1]&63)<<6|c[l+2]&63,u+=String.fromCharCode(m),l+=3);return this.index+=o,u},n.prototype.unpack_array=function(o){for(var c=new Array(o),l=0;l<o;l++)c[l]=this.unpack();return c},n.prototype.unpack_map=function(o){for(var c={},l=0;l<o;l++){var u=this.unpack(),p=this.unpack();c[u]=p}return c},n.prototype.unpack_float=function(){var o=this.unpack_uint32(),c=o>>31,l=(o>>23&255)-127,u=o&8388607|8388608;return(c===0?1:-1)*u*Math.pow(2,l-23)},n.prototype.unpack_double=function(){var o=this.unpack_uint32(),c=this.unpack_uint32(),l=o>>31,u=(o>>20&2047)-1023,p=o&1048575|1048576,m=p*Math.pow(2,u-20)+c*Math.pow(2,u-52);return(l===0?1:-1)*m},n.prototype.read=function(o){var c=this.index;if(c+o<=this.length)return this.dataView.subarray(c,c+o);throw new Error("BinaryPackFailure: read index out of range")};function i(){this.bufferBuilder=new r}i.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},i.prototype.pack=function(o){var c=typeof o;if(c==="string")this.pack_string(o);else if(c==="number")Math.floor(o)===o?this.pack_integer(o):this.pack_double(o);else if(c==="boolean")o===!0?this.bufferBuilder.append(195):o===!1&&this.bufferBuilder.append(194);else if(c==="undefined")this.bufferBuilder.append(192);else if(c==="object")if(o===null)this.bufferBuilder.append(192);else{var l=o.constructor;if(l==Array)this.pack_array(o);else if(l==Blob||l==File||o instanceof Blob||o instanceof File)this.pack_bin(o);else if(l==ArrayBuffer)e.useArrayBufferView?this.pack_bin(new Uint8Array(o)):this.pack_bin(o);else if("BYTES_PER_ELEMENT"in o)e.useArrayBufferView?this.pack_bin(new Uint8Array(o.buffer)):this.pack_bin(o.buffer);else if(l==Object||l.toString().startsWith("class"))this.pack_object(o);else if(l==Date)this.pack_string(o.toString());else if(typeof o.toBinaryPack=="function")this.bufferBuilder.append(o.toBinaryPack());else throw new Error('Type "'+l.toString()+'" not yet supported')}else throw new Error('Type "'+c+'" not yet supported');this.bufferBuilder.flush()},i.prototype.pack_bin=function(o){var c=o.length||o.byteLength||o.size;if(c<=15)this.pack_uint8(160+c);else if(c<=65535)this.bufferBuilder.append(218),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(219),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_string=function(o){var c=a(o);if(c<=15)this.pack_uint8(176+c);else if(c<=65535)this.bufferBuilder.append(216),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(217),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_array=function(o){var c=o.length;if(c<=15)this.pack_uint8(144+c);else if(c<=65535)this.bufferBuilder.append(220),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(221),this.pack_uint32(c);else throw new Error("Invalid length");for(var l=0;l<c;l++)this.pack(o[l])},i.prototype.pack_integer=function(o){if(o>=-32&&o<=127)this.bufferBuilder.append(o&255);else if(o>=0&&o<=255)this.bufferBuilder.append(204),this.pack_uint8(o);else if(o>=-128&&o<=127)this.bufferBuilder.append(208),this.pack_int8(o);else if(o>=0&&o<=65535)this.bufferBuilder.append(205),this.pack_uint16(o);else if(o>=-32768&&o<=32767)this.bufferBuilder.append(209),this.pack_int16(o);else if(o>=0&&o<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(o);else if(o>=-2147483648&&o<=2147483647)this.bufferBuilder.append(210),this.pack_int32(o);else if(o>=-9223372036854776e3&&o<=9223372036854776e3)this.bufferBuilder.append(211),this.pack_int64(o);else if(o>=0&&o<=18446744073709552e3)this.bufferBuilder.append(207),this.pack_uint64(o);else throw new Error("Invalid integer")},i.prototype.pack_double=function(o){var c=0;o<0&&(c=1,o=-o);var l=Math.floor(Math.log(o)/Math.LN2),u=o/Math.pow(2,l)-1,p=Math.floor(u*Math.pow(2,52)),m=Math.pow(2,32),f=c<<31|l+1023<<20|p/m&1048575,x=p%m;this.bufferBuilder.append(203),this.pack_int32(f),this.pack_int32(x)},i.prototype.pack_object=function(o){var c=Object.keys(o),l=c.length;if(l<=15)this.pack_uint8(128+l);else if(l<=65535)this.bufferBuilder.append(222),this.pack_uint16(l);else if(l<=4294967295)this.bufferBuilder.append(223),this.pack_uint32(l);else throw new Error("Invalid length");for(var u in o)o.hasOwnProperty(u)&&(this.pack(u),this.pack(o[u]))},i.prototype.pack_uint8=function(o){this.bufferBuilder.append(o)},i.prototype.pack_uint16=function(o){this.bufferBuilder.append(o>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_uint32=function(o){var c=o&4294967295;this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255)},i.prototype.pack_uint64=function(o){var c=o/Math.pow(2,32),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)},i.prototype.pack_int8=function(o){this.bufferBuilder.append(o&255)},i.prototype.pack_int16=function(o){this.bufferBuilder.append((o&65280)>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int32=function(o){this.bufferBuilder.append(o>>>24&255),this.bufferBuilder.append((o&16711680)>>>16),this.bufferBuilder.append((o&65280)>>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int64=function(o){var c=Math.floor(o/Math.pow(2,32)),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)};function s(o){var c=o.charCodeAt(0);return c<=2047?"00":c<=65535?"000":c<=2097151?"0000":c<=67108863?"00000":"000000"}function a(o){return o.length>600?new Blob([o]).size:o.replace(/[^\u0000-\u007F]/g,s).length}return xs}var uu=lu();const pa=lr(uu);let fa=!0,ma=!0;function Qn(r,e,t){const n=r.match(e);return n&&n.length>=t&&parseInt(n[t],10)}function In(r,e,t){if(!r.RTCPeerConnection)return;const n=r.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(a,o){if(a!==e)return i.apply(this,arguments);const c=l=>{const u=t(l);u&&(o.handleEvent?o.handleEvent(u):o(u))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(o,c),i.apply(this,[a,c])};const s=n.removeEventListener;n.removeEventListener=function(a,o){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(o))return s.apply(this,arguments);const c=this._eventMap[e].get(o);return this._eventMap[e].delete(o),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,c])},Object.defineProperty(n,"on"+e,{get(){return this["_on"+e]},set(a){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),a&&this.addEventListener(e,this["_on"+e]=a)},enumerable:!0,configurable:!0})}function hu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(fa=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function du(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(ma=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function ws(){if(typeof window=="object"){if(fa)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function ur(r,e){ma&&console.warn(r+" is deprecated, please use "+e+" instead.")}function pu(r){const e={browser:null,version:null};if(typeof r>"u"||!r.navigator)return e.browser="Not a browser.",e;const{navigator:t}=r;if(t.mozGetUserMedia)e.browser="firefox",e.version=Qn(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection&&!r.RTCIceGatherer)e.browser="chrome",e.version=Qn(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))e.browser="edge",e.version=Qn(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else if(r.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=Qn(t.userAgent,/AppleWebKit\/(\d+)\./,1),e.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return e.browser="Not a supported browser.",e;return e}function ya(r){return Object.prototype.toString.call(r)==="[object Object]"}function ga(r){return ya(r)?Object.keys(r).reduce(function(e,t){const n=ya(r[t]),i=n?ga(r[t]):r[t],s=n&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,{[t]:i})},{}):r}function _s(r,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(n=>{n.endsWith("Id")?_s(r,r.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach(i=>{_s(r,r.get(i),t)})}))}function va(r,e,t){const n=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;const s=[];return r.forEach(a=>{a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(a=>{r.forEach(o=>{o.type===n&&o.trackId===a.id&&_s(r,o,i)})}),i}const Sa=ws;function ba(r,e){const t=r&&r.navigator;if(!t.mediaDevices)return;const n=function(o){if(typeof o!="object"||o.mandatory||o.optional)return o;const c={};return Object.keys(o).forEach(l=>{if(l==="require"||l==="advanced"||l==="mediaSource")return;const u=typeof o[l]=="object"?o[l]:{ideal:o[l]};u.exact!==void 0&&typeof u.exact=="number"&&(u.min=u.max=u.exact);const p=function(m,f){return m?m+f.charAt(0).toUpperCase()+f.slice(1):f==="deviceId"?"sourceId":f};if(u.ideal!==void 0){c.optional=c.optional||[];let m={};typeof u.ideal=="number"?(m[p("min",l)]=u.ideal,c.optional.push(m),m={},m[p("max",l)]=u.ideal,c.optional.push(m)):(m[p("",l)]=u.ideal,c.optional.push(m))}u.exact!==void 0&&typeof u.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[p("",l)]=u.exact):["min","max"].forEach(m=>{u[m]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[p(m,l)]=u[m])})}),o.advanced&&(c.optional=(c.optional||[]).concat(o.advanced)),c},i=function(o,c){if(e.version>=61)return c(o);if(o=JSON.parse(JSON.stringify(o)),o&&typeof o.audio=="object"){const l=function(u,p,m){p in u&&!(m in u)&&(u[m]=u[p],delete u[p])};o=JSON.parse(JSON.stringify(o)),l(o.audio,"autoGainControl","googAutoGainControl"),l(o.audio,"noiseSuppression","googNoiseSuppression"),o.audio=n(o.audio)}if(o&&typeof o.video=="object"){let l=o.video.facingMode;l=l&&(typeof l=="object"?l:{ideal:l});const u=e.version<66;if(l&&(l.exact==="user"||l.exact==="environment"||l.ideal==="user"||l.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!u)){delete o.video.facingMode;let p;if(l.exact==="environment"||l.ideal==="environment"?p=["back","rear"]:(l.exact==="user"||l.ideal==="user")&&(p=["front"]),p)return t.mediaDevices.enumerateDevices().then(m=>{m=m.filter(x=>x.kind==="videoinput");let f=m.find(x=>p.some(w=>x.label.toLowerCase().includes(w)));return!f&&m.length&&p.includes("back")&&(f=m[m.length-1]),f&&(o.video.deviceId=l.exact?{exact:f.deviceId}:{ideal:f.deviceId}),o.video=n(o.video),Sa("chrome: "+JSON.stringify(o)),c(o)})}o.video=n(o.video)}return Sa("chrome: "+JSON.stringify(o)),c(o)},s=function(o){return e.version>=64?o:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[o.name]||o.name,message:o.message,constraint:o.constraint||o.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},a=function(o,c,l){i(o,u=>{t.webkitGetUserMedia(u,c,p=>{l&&l(s(p))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){const o=t.mediaDevices.getUserMedia.bind(t.mediaDevices);Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(c){return i(c,l=>o(l).then(u=>{if(l.audio&&!u.getAudioTracks().length||l.video&&!u.getVideoTracks().length)throw u.getTracks().forEach(p=>{p.stop()}),new DOMException("","NotFoundError");return u},u=>Promise.reject(s(u))))})}}function fu(r,e){if(!(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices)&&r.navigator.mediaDevices){if(typeof e!="function"){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}r.navigator.mediaDevices.getDisplayMedia=function(t){return e(t).then(n=>{const i=t.video&&t.video.width,s=t.video&&t.video.height,a=t.video&&t.video.frameRate;return t.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:n,maxFrameRate:a||3}},i&&(t.video.mandatory.maxWidth=i),s&&(t.video.mandatory.maxHeight=s),r.navigator.mediaDevices.getUserMedia(t)})}}}function xa(r){r.MediaStream=r.MediaStream||r.webkitMediaStream}function wa(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("ontrack"in r.RTCPeerConnection.prototype)){Object.defineProperty(r.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",n=>{let i;r.RTCPeerConnection.prototype.getReceivers?i=this.getReceivers().find(a=>a.track&&a.track.id===n.track.id):i={track:n.track};const s=new Event("track");s.track=n.track,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)}),t.stream.getTracks().forEach(n=>{let i;r.RTCPeerConnection.prototype.getReceivers?i=this.getReceivers().find(a=>a.track&&a.track.id===n.id):i={track:n};const s=new Event("track");s.track=n,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else In(r,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function _a(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("getSenders"in r.RTCPeerConnection.prototype)&&"createDTMFSender"in r.RTCPeerConnection.prototype){const e=function(i,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=i.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:i}};if(!r.RTCPeerConnection.prototype.getSenders){r.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(a,o){let c=i.apply(this,arguments);return c||(c=e(this,a),this._senders.push(c)),c};const s=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(a){s.apply(this,arguments);const o=this._senders.indexOf(a);o!==-1&&this._senders.splice(o,1)}}const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(i){this._senders=this._senders||[],t.apply(this,[i]),i.getTracks().forEach(s=>{this._senders.push(e(this,s))})};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(i){this._senders=this._senders||[],n.apply(this,[i]),i.getTracks().forEach(s=>{const a=this._senders.find(o=>o.track===s);a&&this._senders.splice(this._senders.indexOf(a),1)})}}else if(typeof r=="object"&&r.RTCPeerConnection&&"getSenders"in r.RTCPeerConnection.prototype&&"createDTMFSender"in r.RTCPeerConnection.prototype&&r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)){const e=r.RTCPeerConnection.prototype.getSenders;r.RTCPeerConnection.prototype.getSenders=function(){const t=e.apply(this,[]);return t.forEach(n=>n._pc=this),t},Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Ta(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[t,n,i]=arguments;if(arguments.length>0&&typeof t=="function")return e.apply(this,arguments);if(e.length===0&&(arguments.length===0||typeof t!="function"))return e.apply(this,[]);const s=function(o){const c={};return o.result().forEach(l=>{const u={id:l.id,timestamp:l.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[l.type]||l.type};l.names().forEach(p=>{u[p]=l.stat(p)}),c[u.id]=u}),c},a=function(o){return new Map(Object.keys(o).map(c=>[c,o[c]]))};if(arguments.length>=2){const o=function(c){n(a(s(c)))};return e.apply(this,[o,t])}return new Promise((o,c)=>{e.apply(this,[function(l){o(a(s(l)))},c])}).then(n,i)}}function Ma(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender&&r.RTCRtpReceiver))return;if(!("getStats"in r.RTCRtpSender.prototype)){const t=r.RTCPeerConnection.prototype.getSenders;t&&(r.RTCPeerConnection.prototype.getSenders=function(){const i=t.apply(this,[]);return i.forEach(s=>s._pc=this),i});const n=r.RTCPeerConnection.prototype.addTrack;n&&(r.RTCPeerConnection.prototype.addTrack=function(){const i=n.apply(this,arguments);return i._pc=this,i}),r.RTCRtpSender.prototype.getStats=function(){const i=this;return this._pc.getStats().then(s=>va(s,i.track,!0))}}if(!("getStats"in r.RTCRtpReceiver.prototype)){const t=r.RTCPeerConnection.prototype.getReceivers;t&&(r.RTCPeerConnection.prototype.getReceivers=function(){const n=t.apply(this,[]);return n.forEach(i=>i._pc=this),n}),In(r,"track",n=>(n.receiver._pc=n.srcElement,n)),r.RTCRtpReceiver.prototype.getStats=function(){const n=this;return this._pc.getStats().then(i=>va(i,n.track,!1))}}if(!("getStats"in r.RTCRtpSender.prototype&&"getStats"in r.RTCRtpReceiver.prototype))return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof r.MediaStreamTrack){const t=arguments[0];let n,i,s;return this.getSenders().forEach(a=>{a.track===t&&(n?s=!0:n=a)}),this.getReceivers().forEach(a=>(a.track===t&&(i?s=!0:i=a),a.track===t)),s||n&&i?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):n?n.getStats():i?i.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function Ca(r){r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(s=>this._shimmedLocalStreams[s][0])};const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(s,a){if(!a)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const o=e.apply(this,arguments);return this._shimmedLocalStreams[a.id]?this._shimmedLocalStreams[a.id].indexOf(o)===-1&&this._shimmedLocalStreams[a.id].push(o):this._shimmedLocalStreams[a.id]=[a,o],o};const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(s){this._shimmedLocalStreams=this._shimmedLocalStreams||{},s.getTracks().forEach(c=>{if(this.getSenders().find(l=>l.track===c))throw new DOMException("Track already exists.","InvalidAccessError")});const a=this.getSenders();t.apply(this,arguments);const o=this.getSenders().filter(c=>a.indexOf(c)===-1);this._shimmedLocalStreams[s.id]=[s].concat(o)};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(s){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[s.id],n.apply(this,arguments)};const i=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(s){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},s&&Object.keys(this._shimmedLocalStreams).forEach(a=>{const o=this._shimmedLocalStreams[a].indexOf(s);o!==-1&&this._shimmedLocalStreams[a].splice(o,1),this._shimmedLocalStreams[a].length===1&&delete this._shimmedLocalStreams[a]}),i.apply(this,arguments)}}function Ea(r,e){if(!r.RTCPeerConnection)return;if(r.RTCPeerConnection.prototype.addTrack&&e.version>=65)return Ca(r);const t=r.RTCPeerConnection.prototype.getLocalStreams;r.RTCPeerConnection.prototype.getLocalStreams=function(){const l=t.apply(this);return this._reverseStreams=this._reverseStreams||{},l.map(u=>this._reverseStreams[u.id])};const n=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(l){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},l.getTracks().forEach(u=>{if(this.getSenders().find(p=>p.track===u))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[l.id]){const u=new r.MediaStream(l.getTracks());this._streams[l.id]=u,this._reverseStreams[u.id]=l,l=u}n.apply(this,[l])};const i=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(l){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[l.id]||l]),delete this._reverseStreams[this._streams[l.id]?this._streams[l.id].id:l.id],delete this._streams[l.id]},r.RTCPeerConnection.prototype.addTrack=function(l,u){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const p=[].slice.call(arguments,1);if(p.length!==1||!p[0].getTracks().find(f=>f===l))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(f=>f.track===l))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const m=this._streams[u.id];if(m)m.addTrack(l),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const f=new r.MediaStream([l]);this._streams[u.id]=f,this._reverseStreams[f.id]=u,this.addStream(f)}return this.getSenders().find(f=>f.track===l)};function s(l,u){let p=u.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const f=l._reverseStreams[m],x=l._streams[f.id];p=p.replace(new RegExp(x.id,"g"),f.id)}),new RTCSessionDescription({type:u.type,sdp:p})}function a(l,u){let p=u.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const f=l._reverseStreams[m],x=l._streams[f.id];p=p.replace(new RegExp(f.id,"g"),x.id)}),new RTCSessionDescription({type:u.type,sdp:p})}["createOffer","createAnswer"].forEach(function(l){const u=r.RTCPeerConnection.prototype[l],p={[l](){const m=arguments;return arguments.length&&typeof arguments[0]=="function"?u.apply(this,[f=>{const x=s(this,f);m[0].apply(null,[x])},f=>{m[1]&&m[1].apply(null,f)},arguments[2]]):u.apply(this,arguments).then(f=>s(this,f))}};r.RTCPeerConnection.prototype[l]=p[l]});const o=r.RTCPeerConnection.prototype.setLocalDescription;r.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?o.apply(this,arguments):(arguments[0]=a(this,arguments[0]),o.apply(this,arguments))};const c=Object.getOwnPropertyDescriptor(r.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(r.RTCPeerConnection.prototype,"localDescription",{get(){const l=c.get.apply(this);return l.type===""?l:s(this,l)}}),r.RTCPeerConnection.prototype.removeTrack=function(l){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!l._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(l._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let u;Object.keys(this._streams).forEach(p=>{this._streams[p].getTracks().find(m=>l.track===m)&&(u=this._streams[p])}),u&&(u.getTracks().length===1?this.removeStream(this._reverseStreams[u.id]):u.removeTrack(l.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Ts(r,e){!r.RTCPeerConnection&&r.webkitRTCPeerConnection&&(r.RTCPeerConnection=r.webkitRTCPeerConnection),r.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const n=r.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new(t==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};r.RTCPeerConnection.prototype[t]=i[t]})}function Pa(r,e){In(r,"negotiationneeded",t=>{const n=t.target;if(!((e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return t})}const ka=Object.freeze(Object.defineProperty({__proto__:null,fixNegotiationNeeded:Pa,shimAddTrackRemoveTrack:Ea,shimAddTrackRemoveTrackWithNative:Ca,shimGetDisplayMedia:fu,shimGetSendersWithDtmf:_a,shimGetStats:Ta,shimGetUserMedia:ba,shimMediaStream:xa,shimOnTrack:wa,shimPeerConnection:Ts,shimSenderReceiverGetStats:Ma},Symbol.toStringTag,{value:"Module"}));function mu(r,e){let t=!1;return r=JSON.parse(JSON.stringify(r)),r.filter(n=>{if(n&&(n.urls||n.url)){let i=n.urls||n.url;n.url&&!n.urls&&ur("RTCIceServer.url","RTCIceServer.urls");const s=typeof i=="string";return s&&(i=[i]),i=i.filter(a=>{if(a.indexOf("stun:")===0)return!1;const o=a.startsWith("turn")&&!a.startsWith("turn:[")&&a.includes("transport=udp");return o&&!t?(t=!0,!0):o&&!t}),delete n.url,n.urls=s?i[0]:i,!!i.length}})}var Ra={exports:{}},Aa;function Oa(){return Aa||(Aa=1,function(r){var e={};e.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
1
+ import{PlaneGeometry as Zo,ShaderChunk as jl,Object3D as Ko,Layers as ar,MeshBasicMaterial as Qo,DoubleSide as ms,AdditiveBlending as $o,InstancedBufferAttribute as dn,DynamicDrawUsage as Xe,InstancedBufferGeometry as Jl,Uniform$1 as Ct,ShaderMaterial as ys,BufferGeometry as Kn,BufferAttribute as ot,Mesh as gs,MeshStandardMaterial as Gl,MeshPhysicalMaterial as Wl,Triangle as pn,Vector3 as q,Plane as ea,Line3 as Wt,Vector2 as en,Matrix4 as Et,Box3 as It,BackSide as Hl,REVISION as ta,FrontSide as na,Sphere as ql,BatchedMesh as Xl,Ray as Yl,Matrix3 as Zl,Vector4 as vs,SkinnedMesh as Kl,InterpolateDiscrete as Ql,InterpolateLinear as ia,AnimationClip as $l,QuaternionKeyframeTrack as eu,ColorKeyframeTrack as tu,VectorKeyframeTrack as nu,BooleanKeyframeTrack as iu,NumberKeyframeTrack as ru,PropertyBinding as ra}from"./three-B7CT31Bt.min.js";const Ae={ComponentState:Object.freeze({DEFAULT:"default",TOUCHED:"touched",PRESSED:"pressed"}),ComponentProperty:Object.freeze({BUTTON:"button",X_AXIS:"xAxis",Y_AXIS:"yAxis",STATE:"state"}),ButtonTouchThreshold:.05,AxisTouchThreshold:.1,VisualResponseProperty:Object.freeze({TRANSFORM:"transform",VISIBILITY:"visibility"})};async function sa(r){const e=await fetch(r);if(e.ok)return e.json();throw new Error(e.statusText)}async function su(r){return await sa(`${r}/profilesList.json`)}async function ou(r,e,t=null,n=!0){if(!r)throw new Error("No xrInputSource supplied");const i=await su(e);let s;if(r.profiles.some(c=>{const l=i[c];return l&&(s={profileId:c,profilePath:`${e}/${l.path}`,deprecated:!!l.deprecated}),!!s}),!s){if(!t)throw new Error("No matching profile name found");const c=i[t];if(!c)throw new Error(`No matching profile name found and default profile "${t}" missing.`);s={profileId:t,profilePath:`${e}/${c.path}`,deprecated:!!c.deprecated}}const a=await sa(s.profilePath);let o;if(n){let c;if(r.handedness==="any"?c=a.layouts[Object.keys(a.layouts)[0]]:c=a.layouts[r.handedness],!c)throw new Error(`No matching handedness, ${r.handedness}, in profile ${s.profileId}`);c.assetPath&&(o=s.profilePath.replace("profile.json",c.assetPath))}return{profile:a,assetPath:o}}const au={xAxis:0,yAxis:0,button:0,state:Ae.ComponentState.DEFAULT};function cu(r=0,e=0){let t=r,n=e;if(Math.sqrt(r*r+e*e)>1){const i=Math.atan2(e,r);t=Math.cos(i),n=Math.sin(i)}return{normalizedXAxis:t*.5+.5,normalizedYAxis:n*.5+.5}}class lu{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Ae.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(au)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:i}){const{normalizedXAxis:s,normalizedYAxis:a}=cu(e,t);switch(this.componentProperty){case Ae.ComponentProperty.X_AXIS:this.value=this.states.includes(i)?s:.5;break;case Ae.ComponentProperty.Y_AXIS:this.value=this.states.includes(i)?a:.5;break;case Ae.ComponentProperty.BUTTON:this.value=this.states.includes(i)?n:0;break;case Ae.ComponentProperty.STATE:this.valueNodeProperty===Ae.VisualResponseProperty.VISIBILITY?this.value=this.states.includes(i):this.value=this.states.includes(i)?1:0;break;default:throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`)}}}class uu{constructor(e,t){if(!e||!t||!t.visualResponses||!t.gamepadIndices||Object.keys(t.gamepadIndices).length===0)throw new Error("Invalid arguments supplied");this.id=e,this.type=t.type,this.rootNodeName=t.rootNodeName,this.touchPointNodeName=t.touchPointNodeName,this.visualResponses={},Object.keys(t.visualResponses).forEach(n=>{const i=new lu(t.visualResponses[n]);this.visualResponses[n]=i}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Ae.ComponentState.DEFAULT,button:this.gamepadIndices.button!==void 0?0:void 0,xAxis:this.gamepadIndices.xAxis!==void 0?0:void 0,yAxis:this.gamepadIndices.yAxis!==void 0?0:void 0}}get data(){return{id:this.id,...this.values}}updateFromGamepad(e){if(this.values.state=Ae.ComponentState.DEFAULT,this.gamepadIndices.button!==void 0&&e.buttons.length>this.gamepadIndices.button){const t=e.buttons[this.gamepadIndices.button];this.values.button=t.value,this.values.button=this.values.button<0?0:this.values.button,this.values.button=this.values.button>1?1:this.values.button,t.pressed||this.values.button===1?this.values.state=Ae.ComponentState.PRESSED:(t.touched||this.values.button>Ae.ButtonTouchThreshold)&&(this.values.state=Ae.ComponentState.TOUCHED)}this.gamepadIndices.xAxis!==void 0&&e.axes.length>this.gamepadIndices.xAxis&&(this.values.xAxis=e.axes[this.gamepadIndices.xAxis],this.values.xAxis=this.values.xAxis<-1?-1:this.values.xAxis,this.values.xAxis=this.values.xAxis>1?1:this.values.xAxis,this.values.state===Ae.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Ae.AxisTouchThreshold&&(this.values.state=Ae.ComponentState.TOUCHED)),this.gamepadIndices.yAxis!==void 0&&e.axes.length>this.gamepadIndices.yAxis&&(this.values.yAxis=e.axes[this.gamepadIndices.yAxis],this.values.yAxis=this.values.yAxis<-1?-1:this.values.yAxis,this.values.yAxis=this.values.yAxis>1?1:this.values.yAxis,this.values.state===Ae.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Ae.AxisTouchThreshold&&(this.values.state=Ae.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(t=>{t.updateFromComponent(this.values)})}}class hu{constructor(e,t,n){if(!e)throw new Error("No xrInputSource supplied");if(!t)throw new Error("No profile supplied");this.xrInputSource=e,this.assetUrl=n,this.id=t.profileId,this.layoutDescription=t.layouts[e.handedness],this.components={},Object.keys(this.layoutDescription.components).forEach(i=>{const s=this.layoutDescription.components[i];this.components[i]=new uu(i,s)}),this.updateFromGamepad()}get gripSpace(){return this.xrInputSource.gripSpace}get targetRaySpace(){return this.xrInputSource.targetRaySpace}get data(){const e=[];return Object.values(this.components).forEach(t=>{e.push(t.data)}),e}updateFromGamepad(){Object.values(this.components).forEach(e=>{e.updateFromGamepad(this.xrInputSource.gamepad)})}}const Ss=2,zt=4,Ht=4,oa=4,tn=new Int32Array(2),aa=new Float32Array(tn.buffer),ca=new Float64Array(tn.buffer),cr=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;class Qt{constructor(e,t){this.low=e|0,this.high=t|0}static create(e,t){return e==0&&t==0?Qt.ZERO:new Qt(e,t)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}}Qt.ZERO=new Qt(0,0);var bs;(function(r){r[r.UTF8_BYTES=1]="UTF8_BYTES",r[r.UTF16_STRING=2]="UTF16_STRING"})(bs||(bs={}));class wi{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new wi(new Uint8Array(e))}clear(){this.position_=0}bytes(){return this.bytes_}position(){return this.position_}setPosition(e){this.position_=e}capacity(){return this.bytes_.length}readInt8(e){return this.readUint8(e)<<24>>24}readUint8(e){return this.bytes_[e]}readInt16(e){return this.readUint16(e)<<16>>16}readUint16(e){return this.bytes_[e]|this.bytes_[e+1]<<8}readInt32(e){return this.bytes_[e]|this.bytes_[e+1]<<8|this.bytes_[e+2]<<16|this.bytes_[e+3]<<24}readUint32(e){return this.readInt32(e)>>>0}readInt64(e){return new Qt(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new Qt(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return tn[0]=this.readInt32(e),aa[0]}readFloat64(e){return tn[cr?0:1]=this.readInt32(e),tn[cr?1:0]=this.readInt32(e+4),ca[0]}writeInt8(e,t){this.bytes_[e]=t}writeUint8(e,t){this.bytes_[e]=t}writeInt16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeUint16(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8}writeInt32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeUint32(e,t){this.bytes_[e]=t,this.bytes_[e+1]=t>>8,this.bytes_[e+2]=t>>16,this.bytes_[e+3]=t>>24}writeInt64(e,t){this.writeInt32(e,t.low),this.writeInt32(e+4,t.high)}writeUint64(e,t){this.writeUint32(e,t.low),this.writeUint32(e+4,t.high)}writeFloat32(e,t){aa[0]=t,this.writeInt32(e,tn[0])}writeFloat64(e,t){ca[0]=t,this.writeInt32(e,tn[cr?0:1]),this.writeInt32(e+4,tn[cr?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+zt+Ht)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<Ht;t++)e+=String.fromCharCode(this.readInt8(this.position_+zt+t));return e}__offset(e,t){const n=e-this.readInt32(e);return t<this.readInt16(n)?this.readInt16(n+t):0}__union(e,t){return e.bb_pos=t+this.readInt32(t),e.bb=this,e}__string(e,t){e+=this.readInt32(e);const n=this.readInt32(e);let i="",s=0;if(e+=zt,t===bs.UTF8_BYTES)return this.bytes_.subarray(e,e+n);for(;s<n;){let a;const o=this.readUint8(e+s++);if(o<192)a=o;else{const c=this.readUint8(e+s++);if(o<224)a=(o&31)<<6|c&63;else{const l=this.readUint8(e+s++);if(o<240)a=(o&15)<<12|(c&63)<<6|l&63;else{const u=this.readUint8(e+s++);a=(o&7)<<18|(c&63)<<12|(l&63)<<6|u&63}}}a<65536?i+=String.fromCharCode(a):(a-=65536,i+=String.fromCharCode((a>>10)+55296,(a&1023)+56320))}return i}__union_with_string(e,t){return typeof e=="string"?this.__string(t):this.__union(e,t)}__indirect(e){return e+this.readInt32(e)}__vector(e){return e+this.readInt32(e)+zt}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=Ht)throw new Error("FlatBuffers: file identifier must be length "+Ht);for(let t=0;t<Ht;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+zt+t))return!1;return!0}createLong(e,t){return Qt.create(e,t)}createScalarList(e,t){const n=[];for(let i=0;i<t;++i)e(i)!==null&&n.push(e(i));return n}createObjList(e,t){const n=[];for(let i=0;i<t;++i){const s=e(i);s!==null&&n.push(s.unpack())}return n}}class Mo{constructor(e){this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null;let t;e?t=e:t=1024,this.bb=wi.allocate(t),this.space=t}clear(){this.bb.clear(),this.space=this.bb.capacity(),this.minalign=1,this.vtable=null,this.vtable_in_use=0,this.isNested=!1,this.object_start=0,this.vtables=[],this.vector_num_elems=0,this.force_defaults=!1,this.string_maps=null}forceDefaults(e){this.force_defaults=e}dataBuffer(){return this.bb}asUint8Array(){return this.bb.bytes().subarray(this.bb.position(),this.bb.position()+this.offset())}prep(e,t){e>this.minalign&&(this.minalign=e);const n=~(this.bb.capacity()-this.space+t)+1&e-1;for(;this.space<n+e+t;){const i=this.bb.capacity();this.bb=Mo.growByteBuffer(this.bb),this.space+=this.bb.capacity()-i}this.pad(n)}pad(e){for(let t=0;t<e;t++)this.bb.writeInt8(--this.space,0)}writeInt8(e){this.bb.writeInt8(this.space-=1,e)}writeInt16(e){this.bb.writeInt16(this.space-=2,e)}writeInt32(e){this.bb.writeInt32(this.space-=4,e)}writeInt64(e){this.bb.writeInt64(this.space-=8,e)}writeFloat32(e){this.bb.writeFloat32(this.space-=4,e)}writeFloat64(e){this.bb.writeFloat64(this.space-=8,e)}addInt8(e){this.prep(1,0),this.writeInt8(e)}addInt16(e){this.prep(2,0),this.writeInt16(e)}addInt32(e){this.prep(4,0),this.writeInt32(e)}addInt64(e){this.prep(8,0),this.writeInt64(e)}addFloat32(e){this.prep(4,0),this.writeFloat32(e)}addFloat64(e){this.prep(8,0),this.writeFloat64(e)}addFieldInt8(e,t,n){(this.force_defaults||t!=n)&&(this.addInt8(t),this.slot(e))}addFieldInt16(e,t,n){(this.force_defaults||t!=n)&&(this.addInt16(t),this.slot(e))}addFieldInt32(e,t,n){(this.force_defaults||t!=n)&&(this.addInt32(t),this.slot(e))}addFieldInt64(e,t,n){(this.force_defaults||!t.equals(n))&&(this.addInt64(t),this.slot(e))}addFieldFloat32(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat32(t),this.slot(e))}addFieldFloat64(e,t,n){(this.force_defaults||t!=n)&&(this.addFloat64(t),this.slot(e))}addFieldOffset(e,t,n){(this.force_defaults||t!=n)&&(this.addOffset(t),this.slot(e))}addFieldStruct(e,t,n){t!=n&&(this.nested(t),this.slot(e))}nested(e){if(e!=this.offset())throw new Error("FlatBuffers: struct must be serialized inline.")}notNested(){if(this.isNested)throw new Error("FlatBuffers: object serialization must not be nested.")}slot(e){this.vtable!==null&&(this.vtable[e]=this.offset())}offset(){return this.bb.capacity()-this.space}static growByteBuffer(e){const t=e.capacity();if(t&3221225472)throw new Error("FlatBuffers: cannot grow buffer beyond 2 gigabytes.");const n=t<<1,i=wi.allocate(n);return i.setPosition(n-t),i.bytes().set(e.bytes(),n-t),i}addOffset(e){this.prep(zt,0),this.writeInt32(this.offset()-e+zt)}startObject(e){this.notNested(),this.vtable==null&&(this.vtable=[]),this.vtable_in_use=e;for(let t=0;t<e;t++)this.vtable[t]=0;this.isNested=!0,this.object_start=this.offset()}endObject(){if(this.vtable==null||!this.isNested)throw new Error("FlatBuffers: endObject called without startObject");this.addInt32(0);const e=this.offset();let t=this.vtable_in_use-1;for(;t>=0&&this.vtable[t]==0;t--);const n=t+1;for(;t>=0;t--)this.addInt16(this.vtable[t]!=0?e-this.vtable[t]:0);const i=2;this.addInt16(e-this.object_start);const s=(n+i)*Ss;this.addInt16(s);let a=0;const o=this.space;e:for(t=0;t<this.vtables.length;t++){const c=this.bb.capacity()-this.vtables[t];if(s==this.bb.readInt16(c)){for(let l=Ss;l<s;l+=Ss)if(this.bb.readInt16(o+l)!=this.bb.readInt16(c+l))continue e;a=this.vtables[t];break}}return a?(this.space=this.bb.capacity()-e,this.bb.writeInt32(this.space,a-e)):(this.vtables.push(this.offset()),this.bb.writeInt32(this.bb.capacity()-e,this.offset()-e)),this.isNested=!1,e}finish(e,t,n){const i=n?oa:0;if(t){const s=t;if(this.prep(this.minalign,zt+Ht+i),s.length!=Ht)throw new Error("FlatBuffers: file identifier must be length "+Ht);for(let a=Ht-1;a>=0;a--)this.writeInt8(s.charCodeAt(a))}this.prep(this.minalign,zt+i),this.addOffset(e),i&&this.addInt32(this.bb.capacity()-this.space),this.bb.setPosition(this.space)}finishSizePrefixed(e,t){this.finish(e,t,!0)}requiredField(e,t){const n=this.bb.capacity()-e,i=n-this.bb.readInt32(n);if(this.bb.readInt16(i+t)==0)throw new Error("FlatBuffers: field "+t+" must be set")}startVector(e,t,n){this.notNested(),this.vector_num_elems=t,this.prep(zt,e*t),this.prep(n,e*t)}endVector(){return this.writeInt32(this.vector_num_elems),this.offset()}createSharedString(e){if(!e)return 0;if(this.string_maps||(this.string_maps=new Map),this.string_maps.has(e))return this.string_maps.get(e);const t=this.createString(e);return this.string_maps.set(e,t),t}createString(e){if(!e)return 0;let t;if(e instanceof Uint8Array)t=e;else{t=[];let n=0;for(;n<e.length;){let i;const s=e.charCodeAt(n++);if(s<55296||s>=56320)i=s;else{const a=e.charCodeAt(n++);i=(s<<10)+a+-56613888}i<128?t.push(i):(i<2048?t.push(i>>6&31|192):(i<65536?t.push(i>>12&15|224):t.push(i>>18&7|240,i>>12&63|128),t.push(i>>6&63|128)),t.push(i&63|128))}}this.addInt8(0),this.startVector(1,t.length,1),this.bb.setPosition(this.space-=t.length);for(let n=0,i=this.space,s=this.bb.bytes();n<t.length;n++)s[i++]=t[n];return this.endVector()}createLong(e,t){return Qt.create(e,t)}createObjectOffset(e){return e===null?0:typeof e=="string"?this.createString(e):e.pack(this)}createObjectOffsetList(e){const t=[];for(let n=0;n<e.length;++n){const i=e[n];if(i!==null)t.push(this.createObjectOffset(i));else throw new Error("FlatBuffers: Argument for createObjectOffsetList cannot contain null.")}return t}createStructOffsetList(e,t){return t(this,e.length),this.createObjectOffsetList(e),this.endVector()}}function lr(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var la={exports:{}},ua;function ha(){return ua||(ua=1,function(r){var e={};e.useBlobBuilder=function(){try{return new Blob([]),!1}catch{return!0}}(),e.useArrayBufferView=!e.useBlobBuilder&&function(){try{return new Blob([new Uint8Array([])]).size===0}catch{return!0}}(),r.exports.binaryFeatures=e;var t=r.exports.BlobBuilder;typeof window<"u"&&(t=r.exports.BlobBuilder=window.WebKitBlobBuilder||window.MozBlobBuilder||window.MSBlobBuilder||window.BlobBuilder);function n(){this._pieces=[],this._parts=[]}n.prototype.append=function(i){typeof i=="number"?this._pieces.push(i):(this.flush(),this._parts.push(i))},n.prototype.flush=function(){if(this._pieces.length>0){var i=new Uint8Array(this._pieces);e.useArrayBufferView||(i=i.buffer),this._parts.push(i),this._pieces=[]}},n.prototype.getBuffer=function(){if(this.flush(),e.useBlobBuilder){for(var i=new t,s=0,a=this._parts.length;s<a;s++)i.append(this._parts[s]);return i.getBlob()}else return new Blob(this._parts)},r.exports.BufferBuilder=n}(la)),la.exports}var xs,da;function du(){if(da)return xs;da=1;var r=ha().BufferBuilder,e=ha().binaryFeatures,t={unpack:function(o){var c=new n(o);return c.unpack()},pack:function(o){var c=new i;c.pack(o);var l=c.getBuffer();return l}};xs=t;function n(o){this.index=0,this.dataBuffer=o,this.dataView=new Uint8Array(this.dataBuffer),this.length=this.dataBuffer.byteLength}n.prototype.unpack=function(){var o=this.unpack_uint8();if(o<128)return o;if((o^224)<32)return(o^224)-32;var c;if((c=o^160)<=15)return this.unpack_raw(c);if((c=o^176)<=15)return this.unpack_string(c);if((c=o^144)<=15)return this.unpack_array(c);if((c=o^128)<=15)return this.unpack_map(c);switch(o){case 192:return null;case 193:return;case 194:return!1;case 195:return!0;case 202:return this.unpack_float();case 203:return this.unpack_double();case 204:return this.unpack_uint8();case 205:return this.unpack_uint16();case 206:return this.unpack_uint32();case 207:return this.unpack_uint64();case 208:return this.unpack_int8();case 209:return this.unpack_int16();case 210:return this.unpack_int32();case 211:return this.unpack_int64();case 212:return;case 213:return;case 214:return;case 215:return;case 216:return c=this.unpack_uint16(),this.unpack_string(c);case 217:return c=this.unpack_uint32(),this.unpack_string(c);case 218:return c=this.unpack_uint16(),this.unpack_raw(c);case 219:return c=this.unpack_uint32(),this.unpack_raw(c);case 220:return c=this.unpack_uint16(),this.unpack_array(c);case 221:return c=this.unpack_uint32(),this.unpack_array(c);case 222:return c=this.unpack_uint16(),this.unpack_map(c);case 223:return c=this.unpack_uint32(),this.unpack_map(c)}},n.prototype.unpack_uint8=function(){var o=this.dataView[this.index]&255;return this.index++,o},n.prototype.unpack_uint16=function(){var o=this.read(2),c=(o[0]&255)*256+(o[1]&255);return this.index+=2,c},n.prototype.unpack_uint32=function(){var o=this.read(4),c=((o[0]*256+o[1])*256+o[2])*256+o[3];return this.index+=4,c},n.prototype.unpack_uint64=function(){var o=this.read(8),c=((((((o[0]*256+o[1])*256+o[2])*256+o[3])*256+o[4])*256+o[5])*256+o[6])*256+o[7];return this.index+=8,c},n.prototype.unpack_int8=function(){var o=this.unpack_uint8();return o<128?o:o-256},n.prototype.unpack_int16=function(){var o=this.unpack_uint16();return o<32768?o:o-65536},n.prototype.unpack_int32=function(){var o=this.unpack_uint32();return o<Math.pow(2,31)?o:o-Math.pow(2,32)},n.prototype.unpack_int64=function(){var o=this.unpack_uint64();return o<Math.pow(2,63)?o:o-Math.pow(2,64)},n.prototype.unpack_raw=function(o){if(this.length<this.index+o)throw new Error("BinaryPackFailure: index is out of range "+this.index+" "+o+" "+this.length);var c=this.dataBuffer.slice(this.index,this.index+o);return this.index+=o,c},n.prototype.unpack_string=function(o){for(var c=this.read(o),l=0,u="",p,m;l<o;)p=c[l],p<128?(u+=String.fromCharCode(p),l++):(p^192)<32?(m=(p^192)<<6|c[l+1]&63,u+=String.fromCharCode(m),l+=2):(m=(p&15)<<12|(c[l+1]&63)<<6|c[l+2]&63,u+=String.fromCharCode(m),l+=3);return this.index+=o,u},n.prototype.unpack_array=function(o){for(var c=new Array(o),l=0;l<o;l++)c[l]=this.unpack();return c},n.prototype.unpack_map=function(o){for(var c={},l=0;l<o;l++){var u=this.unpack(),p=this.unpack();c[u]=p}return c},n.prototype.unpack_float=function(){var o=this.unpack_uint32(),c=o>>31,l=(o>>23&255)-127,u=o&8388607|8388608;return(c===0?1:-1)*u*Math.pow(2,l-23)},n.prototype.unpack_double=function(){var o=this.unpack_uint32(),c=this.unpack_uint32(),l=o>>31,u=(o>>20&2047)-1023,p=o&1048575|1048576,m=p*Math.pow(2,u-20)+c*Math.pow(2,u-52);return(l===0?1:-1)*m},n.prototype.read=function(o){var c=this.index;if(c+o<=this.length)return this.dataView.subarray(c,c+o);throw new Error("BinaryPackFailure: read index out of range")};function i(){this.bufferBuilder=new r}i.prototype.getBuffer=function(){return this.bufferBuilder.getBuffer()},i.prototype.pack=function(o){var c=typeof o;if(c==="string")this.pack_string(o);else if(c==="number")Math.floor(o)===o?this.pack_integer(o):this.pack_double(o);else if(c==="boolean")o===!0?this.bufferBuilder.append(195):o===!1&&this.bufferBuilder.append(194);else if(c==="undefined")this.bufferBuilder.append(192);else if(c==="object")if(o===null)this.bufferBuilder.append(192);else{var l=o.constructor;if(l==Array)this.pack_array(o);else if(l==Blob||l==File||o instanceof Blob||o instanceof File)this.pack_bin(o);else if(l==ArrayBuffer)e.useArrayBufferView?this.pack_bin(new Uint8Array(o)):this.pack_bin(o);else if("BYTES_PER_ELEMENT"in o)e.useArrayBufferView?this.pack_bin(new Uint8Array(o.buffer)):this.pack_bin(o.buffer);else if(l==Object||l.toString().startsWith("class"))this.pack_object(o);else if(l==Date)this.pack_string(o.toString());else if(typeof o.toBinaryPack=="function")this.bufferBuilder.append(o.toBinaryPack());else throw new Error('Type "'+l.toString()+'" not yet supported')}else throw new Error('Type "'+c+'" not yet supported');this.bufferBuilder.flush()},i.prototype.pack_bin=function(o){var c=o.length||o.byteLength||o.size;if(c<=15)this.pack_uint8(160+c);else if(c<=65535)this.bufferBuilder.append(218),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(219),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_string=function(o){var c=a(o);if(c<=15)this.pack_uint8(176+c);else if(c<=65535)this.bufferBuilder.append(216),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(217),this.pack_uint32(c);else throw new Error("Invalid length");this.bufferBuilder.append(o)},i.prototype.pack_array=function(o){var c=o.length;if(c<=15)this.pack_uint8(144+c);else if(c<=65535)this.bufferBuilder.append(220),this.pack_uint16(c);else if(c<=4294967295)this.bufferBuilder.append(221),this.pack_uint32(c);else throw new Error("Invalid length");for(var l=0;l<c;l++)this.pack(o[l])},i.prototype.pack_integer=function(o){if(o>=-32&&o<=127)this.bufferBuilder.append(o&255);else if(o>=0&&o<=255)this.bufferBuilder.append(204),this.pack_uint8(o);else if(o>=-128&&o<=127)this.bufferBuilder.append(208),this.pack_int8(o);else if(o>=0&&o<=65535)this.bufferBuilder.append(205),this.pack_uint16(o);else if(o>=-32768&&o<=32767)this.bufferBuilder.append(209),this.pack_int16(o);else if(o>=0&&o<=4294967295)this.bufferBuilder.append(206),this.pack_uint32(o);else if(o>=-2147483648&&o<=2147483647)this.bufferBuilder.append(210),this.pack_int32(o);else if(o>=-9223372036854776e3&&o<=9223372036854776e3)this.bufferBuilder.append(211),this.pack_int64(o);else if(o>=0&&o<=18446744073709552e3)this.bufferBuilder.append(207),this.pack_uint64(o);else throw new Error("Invalid integer")},i.prototype.pack_double=function(o){var c=0;o<0&&(c=1,o=-o);var l=Math.floor(Math.log(o)/Math.LN2),u=o/Math.pow(2,l)-1,p=Math.floor(u*Math.pow(2,52)),m=Math.pow(2,32),f=c<<31|l+1023<<20|p/m&1048575,x=p%m;this.bufferBuilder.append(203),this.pack_int32(f),this.pack_int32(x)},i.prototype.pack_object=function(o){var c=Object.keys(o),l=c.length;if(l<=15)this.pack_uint8(128+l);else if(l<=65535)this.bufferBuilder.append(222),this.pack_uint16(l);else if(l<=4294967295)this.bufferBuilder.append(223),this.pack_uint32(l);else throw new Error("Invalid length");for(var u in o)o.hasOwnProperty(u)&&(this.pack(u),this.pack(o[u]))},i.prototype.pack_uint8=function(o){this.bufferBuilder.append(o)},i.prototype.pack_uint16=function(o){this.bufferBuilder.append(o>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_uint32=function(o){var c=o&4294967295;this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255)},i.prototype.pack_uint64=function(o){var c=o/Math.pow(2,32),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)},i.prototype.pack_int8=function(o){this.bufferBuilder.append(o&255)},i.prototype.pack_int16=function(o){this.bufferBuilder.append((o&65280)>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int32=function(o){this.bufferBuilder.append(o>>>24&255),this.bufferBuilder.append((o&16711680)>>>16),this.bufferBuilder.append((o&65280)>>>8),this.bufferBuilder.append(o&255)},i.prototype.pack_int64=function(o){var c=Math.floor(o/Math.pow(2,32)),l=o%Math.pow(2,32);this.bufferBuilder.append((c&4278190080)>>>24),this.bufferBuilder.append((c&16711680)>>>16),this.bufferBuilder.append((c&65280)>>>8),this.bufferBuilder.append(c&255),this.bufferBuilder.append((l&4278190080)>>>24),this.bufferBuilder.append((l&16711680)>>>16),this.bufferBuilder.append((l&65280)>>>8),this.bufferBuilder.append(l&255)};function s(o){var c=o.charCodeAt(0);return c<=2047?"00":c<=65535?"000":c<=2097151?"0000":c<=67108863?"00000":"000000"}function a(o){return o.length>600?new Blob([o]).size:o.replace(/[^\u0000-\u007F]/g,s).length}return xs}var pu=du();const pa=lr(pu);let fa=!0,ma=!0;function Qn(r,e,t){const n=r.match(e);return n&&n.length>=t&&parseInt(n[t],10)}function On(r,e,t){if(!r.RTCPeerConnection)return;const n=r.RTCPeerConnection.prototype,i=n.addEventListener;n.addEventListener=function(a,o){if(a!==e)return i.apply(this,arguments);const c=l=>{const u=t(l);u&&(o.handleEvent?o.handleEvent(u):o(u))};return this._eventMap=this._eventMap||{},this._eventMap[e]||(this._eventMap[e]=new Map),this._eventMap[e].set(o,c),i.apply(this,[a,c])};const s=n.removeEventListener;n.removeEventListener=function(a,o){if(a!==e||!this._eventMap||!this._eventMap[e])return s.apply(this,arguments);if(!this._eventMap[e].has(o))return s.apply(this,arguments);const c=this._eventMap[e].get(o);return this._eventMap[e].delete(o),this._eventMap[e].size===0&&delete this._eventMap[e],Object.keys(this._eventMap).length===0&&delete this._eventMap,s.apply(this,[a,c])},Object.defineProperty(n,"on"+e,{get(){return this["_on"+e]},set(a){this["_on"+e]&&(this.removeEventListener(e,this["_on"+e]),delete this["_on"+e]),a&&this.addEventListener(e,this["_on"+e]=a)},enumerable:!0,configurable:!0})}function fu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(fa=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function mu(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(ma=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function ws(){if(typeof window=="object"){if(fa)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function ur(r,e){ma&&console.warn(r+" is deprecated, please use "+e+" instead.")}function yu(r){const e={browser:null,version:null};if(typeof r>"u"||!r.navigator)return e.browser="Not a browser.",e;const{navigator:t}=r;if(t.mozGetUserMedia)e.browser="firefox",e.version=Qn(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection&&!r.RTCIceGatherer)e.browser="chrome",e.version=Qn(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))e.browser="edge",e.version=Qn(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else if(r.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=Qn(t.userAgent,/AppleWebKit\/(\d+)\./,1),e.supportsUnifiedPlan=r.RTCRtpTransceiver&&"currentDirection"in r.RTCRtpTransceiver.prototype;else return e.browser="Not a supported browser.",e;return e}function ya(r){return Object.prototype.toString.call(r)==="[object Object]"}function ga(r){return ya(r)?Object.keys(r).reduce(function(e,t){const n=ya(r[t]),i=n?ga(r[t]):r[t],s=n&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,{[t]:i})},{}):r}function _s(r,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(n=>{n.endsWith("Id")?_s(r,r.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach(i=>{_s(r,r.get(i),t)})}))}function va(r,e,t){const n=t?"outbound-rtp":"inbound-rtp",i=new Map;if(e===null)return i;const s=[];return r.forEach(a=>{a.type==="track"&&a.trackIdentifier===e.id&&s.push(a)}),s.forEach(a=>{r.forEach(o=>{o.type===n&&o.trackId===a.id&&_s(r,o,i)})}),i}const Sa=ws;function ba(r,e){const t=r&&r.navigator;if(!t.mediaDevices)return;const n=function(o){if(typeof o!="object"||o.mandatory||o.optional)return o;const c={};return Object.keys(o).forEach(l=>{if(l==="require"||l==="advanced"||l==="mediaSource")return;const u=typeof o[l]=="object"?o[l]:{ideal:o[l]};u.exact!==void 0&&typeof u.exact=="number"&&(u.min=u.max=u.exact);const p=function(m,f){return m?m+f.charAt(0).toUpperCase()+f.slice(1):f==="deviceId"?"sourceId":f};if(u.ideal!==void 0){c.optional=c.optional||[];let m={};typeof u.ideal=="number"?(m[p("min",l)]=u.ideal,c.optional.push(m),m={},m[p("max",l)]=u.ideal,c.optional.push(m)):(m[p("",l)]=u.ideal,c.optional.push(m))}u.exact!==void 0&&typeof u.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[p("",l)]=u.exact):["min","max"].forEach(m=>{u[m]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[p(m,l)]=u[m])})}),o.advanced&&(c.optional=(c.optional||[]).concat(o.advanced)),c},i=function(o,c){if(e.version>=61)return c(o);if(o=JSON.parse(JSON.stringify(o)),o&&typeof o.audio=="object"){const l=function(u,p,m){p in u&&!(m in u)&&(u[m]=u[p],delete u[p])};o=JSON.parse(JSON.stringify(o)),l(o.audio,"autoGainControl","googAutoGainControl"),l(o.audio,"noiseSuppression","googNoiseSuppression"),o.audio=n(o.audio)}if(o&&typeof o.video=="object"){let l=o.video.facingMode;l=l&&(typeof l=="object"?l:{ideal:l});const u=e.version<66;if(l&&(l.exact==="user"||l.exact==="environment"||l.ideal==="user"||l.ideal==="environment")&&!(t.mediaDevices.getSupportedConstraints&&t.mediaDevices.getSupportedConstraints().facingMode&&!u)){delete o.video.facingMode;let p;if(l.exact==="environment"||l.ideal==="environment"?p=["back","rear"]:(l.exact==="user"||l.ideal==="user")&&(p=["front"]),p)return t.mediaDevices.enumerateDevices().then(m=>{m=m.filter(x=>x.kind==="videoinput");let f=m.find(x=>p.some(w=>x.label.toLowerCase().includes(w)));return!f&&m.length&&p.includes("back")&&(f=m[m.length-1]),f&&(o.video.deviceId=l.exact?{exact:f.deviceId}:{ideal:f.deviceId}),o.video=n(o.video),Sa("chrome: "+JSON.stringify(o)),c(o)})}o.video=n(o.video)}return Sa("chrome: "+JSON.stringify(o)),c(o)},s=function(o){return e.version>=64?o:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[o.name]||o.name,message:o.message,constraint:o.constraint||o.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}},a=function(o,c,l){i(o,u=>{t.webkitGetUserMedia(u,c,p=>{l&&l(s(p))})})};if(t.getUserMedia=a.bind(t),t.mediaDevices.getUserMedia){const o=t.mediaDevices.getUserMedia.bind(t.mediaDevices);Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(c){return i(c,l=>o(l).then(u=>{if(l.audio&&!u.getAudioTracks().length||l.video&&!u.getVideoTracks().length)throw u.getTracks().forEach(p=>{p.stop()}),new DOMException("","NotFoundError");return u},u=>Promise.reject(s(u))))})}}function gu(r,e){if(!(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices)&&r.navigator.mediaDevices){if(typeof e!="function"){console.error("shimGetDisplayMedia: getSourceId argument is not a function");return}r.navigator.mediaDevices.getDisplayMedia=function(t){return e(t).then(n=>{const i=t.video&&t.video.width,s=t.video&&t.video.height,a=t.video&&t.video.frameRate;return t.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:n,maxFrameRate:a||3}},i&&(t.video.mandatory.maxWidth=i),s&&(t.video.mandatory.maxHeight=s),r.navigator.mediaDevices.getUserMedia(t)})}}}function xa(r){r.MediaStream=r.MediaStream||r.webkitMediaStream}function wa(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("ontrack"in r.RTCPeerConnection.prototype)){Object.defineProperty(r.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(t){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=t)},enumerable:!0,configurable:!0});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",n=>{let i;r.RTCPeerConnection.prototype.getReceivers?i=this.getReceivers().find(a=>a.track&&a.track.id===n.track.id):i={track:n.track};const s=new Event("track");s.track=n.track,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)}),t.stream.getTracks().forEach(n=>{let i;r.RTCPeerConnection.prototype.getReceivers?i=this.getReceivers().find(a=>a.track&&a.track.id===n.id):i={track:n};const s=new Event("track");s.track=n,s.receiver=i,s.transceiver={receiver:i},s.streams=[t.stream],this.dispatchEvent(s)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else On(r,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function _a(r){if(typeof r=="object"&&r.RTCPeerConnection&&!("getSenders"in r.RTCPeerConnection.prototype)&&"createDTMFSender"in r.RTCPeerConnection.prototype){const e=function(i,s){return{track:s,get dtmf(){return this._dtmf===void 0&&(s.kind==="audio"?this._dtmf=i.createDTMFSender(s):this._dtmf=null),this._dtmf},_pc:i}};if(!r.RTCPeerConnection.prototype.getSenders){r.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const i=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(a,o){let c=i.apply(this,arguments);return c||(c=e(this,a),this._senders.push(c)),c};const s=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(a){s.apply(this,arguments);const o=this._senders.indexOf(a);o!==-1&&this._senders.splice(o,1)}}const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(i){this._senders=this._senders||[],t.apply(this,[i]),i.getTracks().forEach(s=>{this._senders.push(e(this,s))})};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(i){this._senders=this._senders||[],n.apply(this,[i]),i.getTracks().forEach(s=>{const a=this._senders.find(o=>o.track===s);a&&this._senders.splice(this._senders.indexOf(a),1)})}}else if(typeof r=="object"&&r.RTCPeerConnection&&"getSenders"in r.RTCPeerConnection.prototype&&"createDTMFSender"in r.RTCPeerConnection.prototype&&r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)){const e=r.RTCPeerConnection.prototype.getSenders;r.RTCPeerConnection.prototype.getSenders=function(){const t=e.apply(this,[]);return t.forEach(n=>n._pc=this),t},Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function Ta(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[t,n,i]=arguments;if(arguments.length>0&&typeof t=="function")return e.apply(this,arguments);if(e.length===0&&(arguments.length===0||typeof t!="function"))return e.apply(this,[]);const s=function(o){const c={};return o.result().forEach(l=>{const u={id:l.id,timestamp:l.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[l.type]||l.type};l.names().forEach(p=>{u[p]=l.stat(p)}),c[u.id]=u}),c},a=function(o){return new Map(Object.keys(o).map(c=>[c,o[c]]))};if(arguments.length>=2){const o=function(c){n(a(s(c)))};return e.apply(this,[o,t])}return new Promise((o,c)=>{e.apply(this,[function(l){o(a(s(l)))},c])}).then(n,i)}}function Ma(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender&&r.RTCRtpReceiver))return;if(!("getStats"in r.RTCRtpSender.prototype)){const t=r.RTCPeerConnection.prototype.getSenders;t&&(r.RTCPeerConnection.prototype.getSenders=function(){const i=t.apply(this,[]);return i.forEach(s=>s._pc=this),i});const n=r.RTCPeerConnection.prototype.addTrack;n&&(r.RTCPeerConnection.prototype.addTrack=function(){const i=n.apply(this,arguments);return i._pc=this,i}),r.RTCRtpSender.prototype.getStats=function(){const i=this;return this._pc.getStats().then(s=>va(s,i.track,!0))}}if(!("getStats"in r.RTCRtpReceiver.prototype)){const t=r.RTCPeerConnection.prototype.getReceivers;t&&(r.RTCPeerConnection.prototype.getReceivers=function(){const n=t.apply(this,[]);return n.forEach(i=>i._pc=this),n}),On(r,"track",n=>(n.receiver._pc=n.srcElement,n)),r.RTCRtpReceiver.prototype.getStats=function(){const n=this;return this._pc.getStats().then(i=>va(i,n.track,!1))}}if(!("getStats"in r.RTCRtpSender.prototype&&"getStats"in r.RTCRtpReceiver.prototype))return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof r.MediaStreamTrack){const t=arguments[0];let n,i,s;return this.getSenders().forEach(a=>{a.track===t&&(n?s=!0:n=a)}),this.getReceivers().forEach(a=>(a.track===t&&(i?s=!0:i=a),a.track===t)),s||n&&i?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):n?n.getStats():i?i.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function Ca(r){r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(s=>this._shimmedLocalStreams[s][0])};const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(s,a){if(!a)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const o=e.apply(this,arguments);return this._shimmedLocalStreams[a.id]?this._shimmedLocalStreams[a.id].indexOf(o)===-1&&this._shimmedLocalStreams[a.id].push(o):this._shimmedLocalStreams[a.id]=[a,o],o};const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(s){this._shimmedLocalStreams=this._shimmedLocalStreams||{},s.getTracks().forEach(c=>{if(this.getSenders().find(l=>l.track===c))throw new DOMException("Track already exists.","InvalidAccessError")});const a=this.getSenders();t.apply(this,arguments);const o=this.getSenders().filter(c=>a.indexOf(c)===-1);this._shimmedLocalStreams[s.id]=[s].concat(o)};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(s){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[s.id],n.apply(this,arguments)};const i=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(s){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},s&&Object.keys(this._shimmedLocalStreams).forEach(a=>{const o=this._shimmedLocalStreams[a].indexOf(s);o!==-1&&this._shimmedLocalStreams[a].splice(o,1),this._shimmedLocalStreams[a].length===1&&delete this._shimmedLocalStreams[a]}),i.apply(this,arguments)}}function Ea(r,e){if(!r.RTCPeerConnection)return;if(r.RTCPeerConnection.prototype.addTrack&&e.version>=65)return Ca(r);const t=r.RTCPeerConnection.prototype.getLocalStreams;r.RTCPeerConnection.prototype.getLocalStreams=function(){const l=t.apply(this);return this._reverseStreams=this._reverseStreams||{},l.map(u=>this._reverseStreams[u.id])};const n=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(l){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},l.getTracks().forEach(u=>{if(this.getSenders().find(p=>p.track===u))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[l.id]){const u=new r.MediaStream(l.getTracks());this._streams[l.id]=u,this._reverseStreams[u.id]=l,l=u}n.apply(this,[l])};const i=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(l){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[l.id]||l]),delete this._reverseStreams[this._streams[l.id]?this._streams[l.id].id:l.id],delete this._streams[l.id]},r.RTCPeerConnection.prototype.addTrack=function(l,u){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const p=[].slice.call(arguments,1);if(p.length!==1||!p[0].getTracks().find(f=>f===l))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(this.getSenders().find(f=>f.track===l))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const m=this._streams[u.id];if(m)m.addTrack(l),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const f=new r.MediaStream([l]);this._streams[u.id]=f,this._reverseStreams[f.id]=u,this.addStream(f)}return this.getSenders().find(f=>f.track===l)};function s(l,u){let p=u.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const f=l._reverseStreams[m],x=l._streams[f.id];p=p.replace(new RegExp(x.id,"g"),f.id)}),new RTCSessionDescription({type:u.type,sdp:p})}function a(l,u){let p=u.sdp;return Object.keys(l._reverseStreams||[]).forEach(m=>{const f=l._reverseStreams[m],x=l._streams[f.id];p=p.replace(new RegExp(f.id,"g"),x.id)}),new RTCSessionDescription({type:u.type,sdp:p})}["createOffer","createAnswer"].forEach(function(l){const u=r.RTCPeerConnection.prototype[l],p={[l](){const m=arguments;return arguments.length&&typeof arguments[0]=="function"?u.apply(this,[f=>{const x=s(this,f);m[0].apply(null,[x])},f=>{m[1]&&m[1].apply(null,f)},arguments[2]]):u.apply(this,arguments).then(f=>s(this,f))}};r.RTCPeerConnection.prototype[l]=p[l]});const o=r.RTCPeerConnection.prototype.setLocalDescription;r.RTCPeerConnection.prototype.setLocalDescription=function(){return!arguments.length||!arguments[0].type?o.apply(this,arguments):(arguments[0]=a(this,arguments[0]),o.apply(this,arguments))};const c=Object.getOwnPropertyDescriptor(r.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(r.RTCPeerConnection.prototype,"localDescription",{get(){const l=c.get.apply(this);return l.type===""?l:s(this,l)}}),r.RTCPeerConnection.prototype.removeTrack=function(l){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!l._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(l._pc!==this)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let u;Object.keys(this._streams).forEach(p=>{this._streams[p].getTracks().find(m=>l.track===m)&&(u=this._streams[p])}),u&&(u.getTracks().length===1?this.removeStream(this._reverseStreams[u.id]):u.removeTrack(l.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Ts(r,e){!r.RTCPeerConnection&&r.webkitRTCPeerConnection&&(r.RTCPeerConnection=r.webkitRTCPeerConnection),r.RTCPeerConnection&&e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(t){const n=r.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new(t==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}};r.RTCPeerConnection.prototype[t]=i[t]})}function Pa(r,e){On(r,"negotiationneeded",t=>{const n=t.target;if(!((e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return t})}const ka=Object.freeze(Object.defineProperty({__proto__:null,fixNegotiationNeeded:Pa,shimAddTrackRemoveTrack:Ea,shimAddTrackRemoveTrackWithNative:Ca,shimGetDisplayMedia:gu,shimGetSendersWithDtmf:_a,shimGetStats:Ta,shimGetUserMedia:ba,shimMediaStream:xa,shimOnTrack:wa,shimPeerConnection:Ts,shimSenderReceiverGetStats:Ma},Symbol.toStringTag,{value:"Module"}));function vu(r,e){let t=!1;return r=JSON.parse(JSON.stringify(r)),r.filter(n=>{if(n&&(n.urls||n.url)){let i=n.urls||n.url;n.url&&!n.urls&&ur("RTCIceServer.url","RTCIceServer.urls");const s=typeof i=="string";return s&&(i=[i]),i=i.filter(a=>{if(a.indexOf("stun:")===0)return!1;const o=a.startsWith("turn")&&!a.startsWith("turn:[")&&a.includes("transport=udp");return o&&!t?(t=!0,!0):o&&!t}),delete n.url,n.urls=s?i[0]:i,!!i.length}})}var Ra={exports:{}},Aa;function Oa(){return Aa||(Aa=1,function(r){var e={};e.generateIdentifier=function(){return Math.random().toString(36).substr(2,10)},e.localCName=e.generateIdentifier(),e.splitLines=function(t){return t.trim().split(`
2
2
  `).map(function(n){return n.trim()})},e.splitSections=function(t){var n=t.split(`
3
3
  m=`);return n.map(function(i,s){return(s>0?"m="+i:i).trim()+`\r
4
4
  `})},e.getDescription=function(t){var n=e.splitSections(t);return n&&n[0]},e.getMediaSections=function(t){var n=e.splitSections(t);return n.shift(),n},e.matchPrefix=function(t,n){return e.splitLines(t).filter(function(i){return i.indexOf(n)===0})},e.parseCandidate=function(t){var n;t.indexOf("a=candidate:")===0?n=t.substring(12).split(" "):n=t.substring(10).split(" ");for(var i={foundation:n[0],component:parseInt(n[1],10),protocol:n[2].toLowerCase(),priority:parseInt(n[3],10),ip:n[4],address:n[4],port:parseInt(n[5],10),type:n[7]},s=8;s<n.length;s+=2)switch(n[s]){case"raddr":i.relatedAddress=n[s+1];break;case"rport":i.relatedPort=parseInt(n[s+1],10);break;case"tcptype":i.tcpType=n[s+1];break;case"ufrag":i.ufrag=n[s+1],i.usernameFragment=n[s+1];break;default:i[n[s]]=n[s+1];break}return i},e.writeCandidate=function(t){var n=[];n.push(t.foundation),n.push(t.component),n.push(t.protocol.toUpperCase()),n.push(t.priority),n.push(t.address||t.ip),n.push(t.port);var i=t.type;return n.push("typ"),n.push(i),i!=="host"&&t.relatedAddress&&t.relatedPort&&(n.push("raddr"),n.push(t.relatedAddress),n.push("rport"),n.push(t.relatedPort)),t.tcpType&&t.protocol.toLowerCase()==="tcp"&&(n.push("tcptype"),n.push(t.tcpType)),(t.usernameFragment||t.ufrag)&&(n.push("ufrag"),n.push(t.usernameFragment||t.ufrag)),"candidate:"+n.join(" ")},e.parseIceOptions=function(t){return t.substr(14).split(" ")},e.parseRtpMap=function(t){var n=t.substr(9).split(" "),i={payloadType:parseInt(n.shift(),10)};return n=n[0].split("/"),i.name=n[0],i.clockRate=parseInt(n[1],10),i.channels=n.length===3?parseInt(n[2],10):1,i.numChannels=i.channels,i},e.writeRtpMap=function(t){var n=t.payloadType;t.preferredPayloadType!==void 0&&(n=t.preferredPayloadType);var i=t.channels||t.numChannels||1;return"a=rtpmap:"+n+" "+t.name+"/"+t.clockRate+(i!==1?"/"+i:"")+`\r
@@ -36,7 +36,7 @@ t=0 0\r
36
36
  `;a+="a="+o,a+="a=ssrc:"+t.sendEncodingParameters[0].ssrc+" "+o,t.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+t.sendEncodingParameters[0].rtx.ssrc+" "+o,a+="a=ssrc-group:FID "+t.sendEncodingParameters[0].ssrc+" "+t.sendEncodingParameters[0].rtx.ssrc+`\r
37
37
  `)}return a+="a=ssrc:"+t.sendEncodingParameters[0].ssrc+" cname:"+e.localCName+`\r
38
38
  `,t.rtpSender&&t.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+t.sendEncodingParameters[0].rtx.ssrc+" cname:"+e.localCName+`\r
39
- `),a},e.getDirection=function(t,n){for(var i=e.splitLines(t),s=0;s<i.length;s++)switch(i[s]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[s].substr(2)}return n?e.getDirection(n):"sendrecv"},e.getKind=function(t){var n=e.splitLines(t),i=n[0].split(" ");return i[0].substr(2)},e.isRejected=function(t){return t.split(" ",2)[1]==="0"},e.parseMLine=function(t){var n=e.splitLines(t),i=n[0].substr(2).split(" ");return{kind:i[0],port:parseInt(i[1],10),protocol:i[2],fmt:i.slice(3).join(" ")}},e.parseOLine=function(t){var n=e.matchPrefix(t,"o=")[0],i=n.substr(2).split(" ");return{username:i[0],sessionId:i[1],sessionVersion:parseInt(i[2],10),netType:i[3],addressType:i[4],address:i[5]}},e.isValidSDP=function(t){if(typeof t!="string"||t.length===0)return!1;for(var n=e.splitLines(t),i=0;i<n.length;i++)if(n[i].length<2||n[i].charAt(1)!=="=")return!1;return!0},r.exports=e}(Ra)),Ra.exports}var Ms,Ia;function yu(){if(Ia)return Ms;Ia=1;var r=Oa();function e(c){return{inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[c.type]||c.type}function t(c,l,u,p,m){var f=r.writeRtpDescription(c.kind,l);if(f+=r.writeIceParameters(c.iceGatherer.getLocalParameters()),f+=r.writeDtlsParameters(c.dtlsTransport.getLocalParameters(),u==="offer"?"actpass":m||"active"),f+="a=mid:"+c.mid+`\r
39
+ `),a},e.getDirection=function(t,n){for(var i=e.splitLines(t),s=0;s<i.length;s++)switch(i[s]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[s].substr(2)}return n?e.getDirection(n):"sendrecv"},e.getKind=function(t){var n=e.splitLines(t),i=n[0].split(" ");return i[0].substr(2)},e.isRejected=function(t){return t.split(" ",2)[1]==="0"},e.parseMLine=function(t){var n=e.splitLines(t),i=n[0].substr(2).split(" ");return{kind:i[0],port:parseInt(i[1],10),protocol:i[2],fmt:i.slice(3).join(" ")}},e.parseOLine=function(t){var n=e.matchPrefix(t,"o=")[0],i=n.substr(2).split(" ");return{username:i[0],sessionId:i[1],sessionVersion:parseInt(i[2],10),netType:i[3],addressType:i[4],address:i[5]}},e.isValidSDP=function(t){if(typeof t!="string"||t.length===0)return!1;for(var n=e.splitLines(t),i=0;i<n.length;i++)if(n[i].length<2||n[i].charAt(1)!=="=")return!1;return!0},r.exports=e}(Ra)),Ra.exports}var Ms,Ia;function Su(){if(Ia)return Ms;Ia=1;var r=Oa();function e(c){return{inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[c.type]||c.type}function t(c,l,u,p,m){var f=r.writeRtpDescription(c.kind,l);if(f+=r.writeIceParameters(c.iceGatherer.getLocalParameters()),f+=r.writeDtlsParameters(c.dtlsTransport.getLocalParameters(),u==="offer"?"actpass":m||"active"),f+="a=mid:"+c.mid+`\r
40
40
  `,c.rtpSender&&c.rtpReceiver?f+=`a=sendrecv\r
41
41
  `:c.rtpSender?f+=`a=sendonly\r
42
42
  `:c.rtpReceiver?f+=`a=recvonly\r
@@ -45,42 +45,37 @@ t=0 0\r
45
45
  `;f+="a="+w,f+="a=ssrc:"+c.sendEncodingParameters[0].ssrc+" "+w,c.sendEncodingParameters[0].rtx&&(f+="a=ssrc:"+c.sendEncodingParameters[0].rtx.ssrc+" "+w,f+="a=ssrc-group:FID "+c.sendEncodingParameters[0].ssrc+" "+c.sendEncodingParameters[0].rtx.ssrc+`\r
46
46
  `)}return f+="a=ssrc:"+c.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+`\r
47
47
  `,c.rtpSender&&c.sendEncodingParameters[0].rtx&&(f+="a=ssrc:"+c.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+`\r
48
- `),f}function n(c,l){var u=!1;return c=JSON.parse(JSON.stringify(c)),c.filter(function(p){if(p&&(p.urls||p.url)){var m=p.urls||p.url;p.url&&!p.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var f=typeof m=="string";return f&&(m=[m]),m=m.filter(function(x){var w=x.indexOf("turn:")===0&&x.indexOf("transport=udp")!==-1&&x.indexOf("turn:[")===-1&&!u;return w?(u=!0,!0):x.indexOf("stun:")===0&&l>=14393&&x.indexOf("?transport=udp")===-1}),delete p.url,p.urls=f?m[0]:m,!!m.length}})}function i(c,l){var u={codecs:[],headerExtensions:[],fecMechanisms:[]},p=function(f,x){f=parseInt(f,10);for(var w=0;w<x.length;w++)if(x[w].payloadType===f||x[w].preferredPayloadType===f)return x[w]},m=function(f,x,w,g){var v=p(f.parameters.apt,w),_=p(x.parameters.apt,g);return v&&_&&v.name.toLowerCase()===_.name.toLowerCase()};return c.codecs.forEach(function(f){for(var x=0;x<l.codecs.length;x++){var w=l.codecs[x];if(f.name.toLowerCase()===w.name.toLowerCase()&&f.clockRate===w.clockRate){if(f.name.toLowerCase()==="rtx"&&f.parameters&&w.parameters.apt&&!m(f,w,c.codecs,l.codecs))continue;w=JSON.parse(JSON.stringify(w)),w.numChannels=Math.min(f.numChannels,w.numChannels),u.codecs.push(w),w.rtcpFeedback=w.rtcpFeedback.filter(function(g){for(var v=0;v<f.rtcpFeedback.length;v++)if(f.rtcpFeedback[v].type===g.type&&f.rtcpFeedback[v].parameter===g.parameter)return!0;return!1});break}}}),c.headerExtensions.forEach(function(f){for(var x=0;x<l.headerExtensions.length;x++){var w=l.headerExtensions[x];if(f.uri===w.uri){u.headerExtensions.push(w);break}}}),u}function s(c,l,u){return{offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[l][c].indexOf(u)!==-1}function a(c,l){var u=c.getRemoteCandidates().find(function(p){return l.foundation===p.foundation&&l.ip===p.ip&&l.port===p.port&&l.priority===p.priority&&l.protocol===p.protocol&&l.type===p.type});return u||c.addRemoteCandidate(l),!u}function o(c,l){var u=new Error(l);return u.name=c,u.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[c],u}return Ms=function(c,l){function u(g,v){v.addTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("addtrack",{track:g}))}function p(g,v){v.removeTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("removetrack",{track:g}))}function m(g,v,_,S){var M=new Event("track");M.track=v,M.receiver=_,M.transceiver={receiver:_},M.streams=S,c.setTimeout(function(){g._dispatchEvent("track",M)})}var f=function(g){var v=this,_=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(M){v[M]=_[M].bind(_)}),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",g=JSON.parse(JSON.stringify(g||{})),this.usingBundle=g.bundlePolicy==="max-bundle",g.rtcpMuxPolicy==="negotiate")throw o("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(g.rtcpMuxPolicy||(g.rtcpMuxPolicy="require"),g.iceTransportPolicy){case"all":case"relay":break;default:g.iceTransportPolicy="all";break}switch(g.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:g.bundlePolicy="balanced";break}if(g.iceServers=n(g.iceServers||[],l),this._iceGatherers=[],g.iceCandidatePoolSize)for(var S=g.iceCandidatePoolSize;S>0;S--)this._iceGatherers.push(new c.RTCIceGatherer({iceServers:g.iceServers,gatherPolicy:g.iceTransportPolicy}));else g.iceCandidatePoolSize=0;this._config=g,this.transceivers=[],this._sdpSessionId=r.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(f.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(f.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),f.prototype.onicecandidate=null,f.prototype.onaddstream=null,f.prototype.ontrack=null,f.prototype.onremovestream=null,f.prototype.onsignalingstatechange=null,f.prototype.oniceconnectionstatechange=null,f.prototype.onconnectionstatechange=null,f.prototype.onicegatheringstatechange=null,f.prototype.onnegotiationneeded=null,f.prototype.ondatachannel=null,f.prototype._dispatchEvent=function(g,v){this._isClosed||(this.dispatchEvent(v),typeof this["on"+g]=="function"&&this["on"+g](v))},f.prototype._emitGatheringStateChange=function(){var g=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",g)},f.prototype.getConfiguration=function(){return this._config},f.prototype.getLocalStreams=function(){return this.localStreams},f.prototype.getRemoteStreams=function(){return this.remoteStreams},f.prototype._createTransceiver=function(g,v){var _=this.transceivers.length>0,S={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:g,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&_)S.iceTransport=this.transceivers[0].iceTransport,S.dtlsTransport=this.transceivers[0].dtlsTransport;else{var M=this._createIceAndDtlsTransports();S.iceTransport=M.iceTransport,S.dtlsTransport=M.dtlsTransport}return v||this.transceivers.push(S),S},f.prototype.addTrack=function(g,v){if(this._isClosed)throw o("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var _=this.transceivers.find(function(T){return T.track===g});if(_)throw o("InvalidAccessError","Track already exists.");for(var S,M=0;M<this.transceivers.length;M++)!this.transceivers[M].track&&this.transceivers[M].kind===g.kind&&(S=this.transceivers[M]);return S||(S=this._createTransceiver(g.kind)),this._maybeFireNegotiationNeeded(),this.localStreams.indexOf(v)===-1&&this.localStreams.push(v),S.track=g,S.stream=v,S.rtpSender=new c.RTCRtpSender(g,S.dtlsTransport),S.rtpSender},f.prototype.addStream=function(g){var v=this;if(l>=15025)g.getTracks().forEach(function(S){v.addTrack(S,g)});else{var _=g.clone();g.getTracks().forEach(function(S,M){var T=_.getTracks()[M];S.addEventListener("enabled",function(E){T.enabled=E.enabled})}),_.getTracks().forEach(function(S){v.addTrack(S,_)})}},f.prototype.removeTrack=function(g){if(this._isClosed)throw o("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(g instanceof c.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var v=this.transceivers.find(function(M){return M.rtpSender===g});if(!v)throw o("InvalidAccessError","Sender was not created by this connection.");var _=v.stream;v.rtpSender.stop(),v.rtpSender=null,v.track=null,v.stream=null;var S=this.transceivers.map(function(M){return M.stream});S.indexOf(_)===-1&&this.localStreams.indexOf(_)>-1&&this.localStreams.splice(this.localStreams.indexOf(_),1),this._maybeFireNegotiationNeeded()},f.prototype.removeStream=function(g){var v=this;g.getTracks().forEach(function(_){var S=v.getSenders().find(function(M){return M.track===_});S&&v.removeTrack(S)})},f.prototype.getSenders=function(){return this.transceivers.filter(function(g){return!!g.rtpSender}).map(function(g){return g.rtpSender})},f.prototype.getReceivers=function(){return this.transceivers.filter(function(g){return!!g.rtpReceiver}).map(function(g){return g.rtpReceiver})},f.prototype._createIceGatherer=function(g,v){var _=this;if(v&&g>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var S=new c.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(S,"state",{value:"new",writable:!0}),this.transceivers[g].bufferedCandidateEvents=[],this.transceivers[g].bufferCandidates=function(M){var T=!M.candidate||Object.keys(M.candidate).length===0;S.state=T?"completed":"gathering",_.transceivers[g].bufferedCandidateEvents!==null&&_.transceivers[g].bufferedCandidateEvents.push(M)},S.addEventListener("localcandidate",this.transceivers[g].bufferCandidates),S},f.prototype._gather=function(g,v){var _=this,S=this.transceivers[v].iceGatherer;if(!S.onlocalcandidate){var M=this.transceivers[v].bufferedCandidateEvents;this.transceivers[v].bufferedCandidateEvents=null,S.removeEventListener("localcandidate",this.transceivers[v].bufferCandidates),S.onlocalcandidate=function(T){if(!(_.usingBundle&&v>0)){var E=new Event("icecandidate");E.candidate={sdpMid:g,sdpMLineIndex:v};var P=T.candidate,z=!P||Object.keys(P).length===0;if(z)(S.state==="new"||S.state==="gathering")&&(S.state="completed");else{S.state==="new"&&(S.state="gathering"),P.component=1,P.ufrag=S.getLocalParameters().usernameFragment;var R=r.writeCandidate(P);E.candidate=Object.assign(E.candidate,r.parseCandidate(R)),E.candidate.candidate=R,E.candidate.toJSON=function(){return{candidate:E.candidate.candidate,sdpMid:E.candidate.sdpMid,sdpMLineIndex:E.candidate.sdpMLineIndex,usernameFragment:E.candidate.usernameFragment}}}var A=r.getMediaSections(_._localDescription.sdp);z?A[E.candidate.sdpMLineIndex]+=`a=end-of-candidates\r
48
+ `),f}function n(c,l){var u=!1;return c=JSON.parse(JSON.stringify(c)),c.filter(function(p){if(p&&(p.urls||p.url)){var m=p.urls||p.url;p.url&&!p.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var f=typeof m=="string";return f&&(m=[m]),m=m.filter(function(x){var w=x.indexOf("turn:")===0&&x.indexOf("transport=udp")!==-1&&x.indexOf("turn:[")===-1&&!u;return w?(u=!0,!0):x.indexOf("stun:")===0&&l>=14393&&x.indexOf("?transport=udp")===-1}),delete p.url,p.urls=f?m[0]:m,!!m.length}})}function i(c,l){var u={codecs:[],headerExtensions:[],fecMechanisms:[]},p=function(f,x){f=parseInt(f,10);for(var w=0;w<x.length;w++)if(x[w].payloadType===f||x[w].preferredPayloadType===f)return x[w]},m=function(f,x,w,g){var v=p(f.parameters.apt,w),_=p(x.parameters.apt,g);return v&&_&&v.name.toLowerCase()===_.name.toLowerCase()};return c.codecs.forEach(function(f){for(var x=0;x<l.codecs.length;x++){var w=l.codecs[x];if(f.name.toLowerCase()===w.name.toLowerCase()&&f.clockRate===w.clockRate){if(f.name.toLowerCase()==="rtx"&&f.parameters&&w.parameters.apt&&!m(f,w,c.codecs,l.codecs))continue;w=JSON.parse(JSON.stringify(w)),w.numChannels=Math.min(f.numChannels,w.numChannels),u.codecs.push(w),w.rtcpFeedback=w.rtcpFeedback.filter(function(g){for(var v=0;v<f.rtcpFeedback.length;v++)if(f.rtcpFeedback[v].type===g.type&&f.rtcpFeedback[v].parameter===g.parameter)return!0;return!1});break}}}),c.headerExtensions.forEach(function(f){for(var x=0;x<l.headerExtensions.length;x++){var w=l.headerExtensions[x];if(f.uri===w.uri){u.headerExtensions.push(w);break}}}),u}function s(c,l,u){return{offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[l][c].indexOf(u)!==-1}function a(c,l){var u=c.getRemoteCandidates().find(function(p){return l.foundation===p.foundation&&l.ip===p.ip&&l.port===p.port&&l.priority===p.priority&&l.protocol===p.protocol&&l.type===p.type});return u||c.addRemoteCandidate(l),!u}function o(c,l){var u=new Error(l);return u.name=c,u.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[c],u}return Ms=function(c,l){function u(g,v){v.addTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("addtrack",{track:g}))}function p(g,v){v.removeTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("removetrack",{track:g}))}function m(g,v,_,S){var T=new Event("track");T.track=v,T.receiver=_,T.transceiver={receiver:_},T.streams=S,c.setTimeout(function(){g._dispatchEvent("track",T)})}var f=function(g){var v=this,_=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(T){v[T]=_[T].bind(_)}),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",g=JSON.parse(JSON.stringify(g||{})),this.usingBundle=g.bundlePolicy==="max-bundle",g.rtcpMuxPolicy==="negotiate")throw o("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(g.rtcpMuxPolicy||(g.rtcpMuxPolicy="require"),g.iceTransportPolicy){case"all":case"relay":break;default:g.iceTransportPolicy="all";break}switch(g.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:g.bundlePolicy="balanced";break}if(g.iceServers=n(g.iceServers||[],l),this._iceGatherers=[],g.iceCandidatePoolSize)for(var S=g.iceCandidatePoolSize;S>0;S--)this._iceGatherers.push(new c.RTCIceGatherer({iceServers:g.iceServers,gatherPolicy:g.iceTransportPolicy}));else g.iceCandidatePoolSize=0;this._config=g,this.transceivers=[],this._sdpSessionId=r.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(f.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(f.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),f.prototype.onicecandidate=null,f.prototype.onaddstream=null,f.prototype.ontrack=null,f.prototype.onremovestream=null,f.prototype.onsignalingstatechange=null,f.prototype.oniceconnectionstatechange=null,f.prototype.onconnectionstatechange=null,f.prototype.onicegatheringstatechange=null,f.prototype.onnegotiationneeded=null,f.prototype.ondatachannel=null,f.prototype._dispatchEvent=function(g,v){this._isClosed||(this.dispatchEvent(v),typeof this["on"+g]=="function"&&this["on"+g](v))},f.prototype._emitGatheringStateChange=function(){var g=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",g)},f.prototype.getConfiguration=function(){return this._config},f.prototype.getLocalStreams=function(){return this.localStreams},f.prototype.getRemoteStreams=function(){return this.remoteStreams},f.prototype._createTransceiver=function(g,v){var _=this.transceivers.length>0,S={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:g,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&_)S.iceTransport=this.transceivers[0].iceTransport,S.dtlsTransport=this.transceivers[0].dtlsTransport;else{var T=this._createIceAndDtlsTransports();S.iceTransport=T.iceTransport,S.dtlsTransport=T.dtlsTransport}return v||this.transceivers.push(S),S},f.prototype.addTrack=function(g,v){if(this._isClosed)throw o("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var _=this.transceivers.find(function(M){return M.track===g});if(_)throw o("InvalidAccessError","Track already exists.");for(var S,T=0;T<this.transceivers.length;T++)!this.transceivers[T].track&&this.transceivers[T].kind===g.kind&&(S=this.transceivers[T]);return S||(S=this._createTransceiver(g.kind)),this._maybeFireNegotiationNeeded(),this.localStreams.indexOf(v)===-1&&this.localStreams.push(v),S.track=g,S.stream=v,S.rtpSender=new c.RTCRtpSender(g,S.dtlsTransport),S.rtpSender},f.prototype.addStream=function(g){var v=this;if(l>=15025)g.getTracks().forEach(function(S){v.addTrack(S,g)});else{var _=g.clone();g.getTracks().forEach(function(S,T){var M=_.getTracks()[T];S.addEventListener("enabled",function(E){M.enabled=E.enabled})}),_.getTracks().forEach(function(S){v.addTrack(S,_)})}},f.prototype.removeTrack=function(g){if(this._isClosed)throw o("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(g instanceof c.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var v=this.transceivers.find(function(T){return T.rtpSender===g});if(!v)throw o("InvalidAccessError","Sender was not created by this connection.");var _=v.stream;v.rtpSender.stop(),v.rtpSender=null,v.track=null,v.stream=null;var S=this.transceivers.map(function(T){return T.stream});S.indexOf(_)===-1&&this.localStreams.indexOf(_)>-1&&this.localStreams.splice(this.localStreams.indexOf(_),1),this._maybeFireNegotiationNeeded()},f.prototype.removeStream=function(g){var v=this;g.getTracks().forEach(function(_){var S=v.getSenders().find(function(T){return T.track===_});S&&v.removeTrack(S)})},f.prototype.getSenders=function(){return this.transceivers.filter(function(g){return!!g.rtpSender}).map(function(g){return g.rtpSender})},f.prototype.getReceivers=function(){return this.transceivers.filter(function(g){return!!g.rtpReceiver}).map(function(g){return g.rtpReceiver})},f.prototype._createIceGatherer=function(g,v){var _=this;if(v&&g>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var S=new c.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(S,"state",{value:"new",writable:!0}),this.transceivers[g].bufferedCandidateEvents=[],this.transceivers[g].bufferCandidates=function(T){var M=!T.candidate||Object.keys(T.candidate).length===0;S.state=M?"completed":"gathering",_.transceivers[g].bufferedCandidateEvents!==null&&_.transceivers[g].bufferedCandidateEvents.push(T)},S.addEventListener("localcandidate",this.transceivers[g].bufferCandidates),S},f.prototype._gather=function(g,v){var _=this,S=this.transceivers[v].iceGatherer;if(!S.onlocalcandidate){var T=this.transceivers[v].bufferedCandidateEvents;this.transceivers[v].bufferedCandidateEvents=null,S.removeEventListener("localcandidate",this.transceivers[v].bufferCandidates),S.onlocalcandidate=function(M){if(!(_.usingBundle&&v>0)){var E=new Event("icecandidate");E.candidate={sdpMid:g,sdpMLineIndex:v};var P=M.candidate,O=!P||Object.keys(P).length===0;if(O)(S.state==="new"||S.state==="gathering")&&(S.state="completed");else{S.state==="new"&&(S.state="gathering"),P.component=1,P.ufrag=S.getLocalParameters().usernameFragment;var R=r.writeCandidate(P);E.candidate=Object.assign(E.candidate,r.parseCandidate(R)),E.candidate.candidate=R,E.candidate.toJSON=function(){return{candidate:E.candidate.candidate,sdpMid:E.candidate.sdpMid,sdpMLineIndex:E.candidate.sdpMLineIndex,usernameFragment:E.candidate.usernameFragment}}}var A=r.getMediaSections(_._localDescription.sdp);O?A[E.candidate.sdpMLineIndex]+=`a=end-of-candidates\r
49
49
  `:A[E.candidate.sdpMLineIndex]+="a="+E.candidate.candidate+`\r
50
- `,_._localDescription.sdp=r.getDescription(_._localDescription.sdp)+A.join("");var B=_.transceivers.every(function(O){return O.iceGatherer&&O.iceGatherer.state==="completed"});_.iceGatheringState!=="gathering"&&(_.iceGatheringState="gathering",_._emitGatheringStateChange()),z||_._dispatchEvent("icecandidate",E),B&&(_._dispatchEvent("icecandidate",new Event("icecandidate")),_.iceGatheringState="complete",_._emitGatheringStateChange())}},c.setTimeout(function(){M.forEach(function(T){S.onlocalcandidate(T)})},0)}},f.prototype._createIceAndDtlsTransports=function(){var g=this,v=new c.RTCIceTransport(null);v.onicestatechange=function(){g._updateIceConnectionState(),g._updateConnectionState()};var _=new c.RTCDtlsTransport(v);return _.ondtlsstatechange=function(){g._updateConnectionState()},_.onerror=function(){Object.defineProperty(_,"state",{value:"failed",writable:!0}),g._updateConnectionState()},{iceTransport:v,dtlsTransport:_}},f.prototype._disposeIceAndDtlsTransports=function(g){var v=this.transceivers[g].iceGatherer;v&&(delete v.onlocalcandidate,delete this.transceivers[g].iceGatherer);var _=this.transceivers[g].iceTransport;_&&(delete _.onicestatechange,delete this.transceivers[g].iceTransport);var S=this.transceivers[g].dtlsTransport;S&&(delete S.ondtlsstatechange,delete S.onerror,delete this.transceivers[g].dtlsTransport)},f.prototype._transceive=function(g,v,_){var S=i(g.localCapabilities,g.remoteCapabilities);v&&g.rtpSender&&(S.encodings=g.sendEncodingParameters,S.rtcp={cname:r.localCName,compound:g.rtcpParameters.compound},g.recvEncodingParameters.length&&(S.rtcp.ssrc=g.recvEncodingParameters[0].ssrc),g.rtpSender.send(S)),_&&g.rtpReceiver&&S.codecs.length>0&&(g.kind==="video"&&g.recvEncodingParameters&&l<15019&&g.recvEncodingParameters.forEach(function(M){delete M.rtx}),g.recvEncodingParameters.length?S.encodings=g.recvEncodingParameters:S.encodings=[{}],S.rtcp={compound:g.rtcpParameters.compound},g.rtcpParameters.cname&&(S.rtcp.cname=g.rtcpParameters.cname),g.sendEncodingParameters.length&&(S.rtcp.ssrc=g.sendEncodingParameters[0].ssrc),g.rtpReceiver.receive(S))},f.prototype.setLocalDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setLocalDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set local "+g.type+" in state "+v.signalingState));var _,S;if(g.type==="offer")_=r.splitSections(g.sdp),S=_.shift(),_.forEach(function(T,E){var P=r.parseRtpParameters(T);v.transceivers[E].localCapabilities=P}),v.transceivers.forEach(function(T,E){v._gather(T.mid,E)});else if(g.type==="answer"){_=r.splitSections(v._remoteDescription.sdp),S=_.shift();var M=r.matchPrefix(S,"a=ice-lite").length>0;_.forEach(function(T,E){var P=v.transceivers[E],z=P.iceGatherer,R=P.iceTransport,A=P.dtlsTransport,B=P.localCapabilities,O=P.remoteCapabilities,U=r.isRejected(T)&&r.matchPrefix(T,"a=bundle-only").length===0;if(!U&&!P.rejected){var L=r.getIceParameters(T,S),G=r.getDtlsParameters(T,S);M&&(G.role="server"),(!v.usingBundle||E===0)&&(v._gather(P.mid,E),R.state==="new"&&R.start(z,L,M?"controlling":"controlled"),A.state==="new"&&A.start(G));var H=i(B,O);v._transceive(P,H.codecs.length>0,!1)}})}return v._localDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-local-offer"):v._updateSignalingState("stable"),Promise.resolve()},f.prototype.setRemoteDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setRemoteDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set remote "+g.type+" in state "+v.signalingState));var _={};v.remoteStreams.forEach(function(R){_[R.id]=R});var S=[],M=r.splitSections(g.sdp),T=M.shift(),E=r.matchPrefix(T,"a=ice-lite").length>0,P=r.matchPrefix(T,"a=group:BUNDLE ").length>0;v.usingBundle=P;var z=r.matchPrefix(T,"a=ice-options:")[0];return z?v.canTrickleIceCandidates=z.substr(14).split(" ").indexOf("trickle")>=0:v.canTrickleIceCandidates=!1,M.forEach(function(R,A){var B=r.splitLines(R),O=r.getKind(R),U=r.isRejected(R)&&r.matchPrefix(R,"a=bundle-only").length===0,L=B[0].substr(2).split(" ")[2],G=r.getDirection(R,T),H=r.parseMsid(R),Q=r.getMid(R)||r.generateIdentifier();if(U||O==="application"&&(L==="DTLS/SCTP"||L==="UDP/DTLS/SCTP")){v.transceivers[A]={mid:Q,kind:O,protocol:L,rejected:!0};return}!U&&v.transceivers[A]&&v.transceivers[A].rejected&&(v.transceivers[A]=v._createTransceiver(O,!0));var j,pe,ie,he,oe,le,xe,ge,de,se=r.parseRtpParameters(R),Ge,Ie;U||(Ge=r.getIceParameters(R,T),Ie=r.getDtlsParameters(R,T),Ie.role="client"),xe=r.parseRtpEncodingParameters(R);var Ee=r.parseRtcpParameters(R),it=r.matchPrefix(R,"a=end-of-candidates",T).length>0,ze=r.matchPrefix(R,"a=candidate:").map(function(fe){return r.parseCandidate(fe)}).filter(function(fe){return fe.component===1});if((g.type==="offer"||g.type==="answer")&&!U&&P&&A>0&&v.transceivers[A]&&(v._disposeIceAndDtlsTransports(A),v.transceivers[A].iceGatherer=v.transceivers[0].iceGatherer,v.transceivers[A].iceTransport=v.transceivers[0].iceTransport,v.transceivers[A].dtlsTransport=v.transceivers[0].dtlsTransport,v.transceivers[A].rtpSender&&v.transceivers[A].rtpSender.setTransport(v.transceivers[0].dtlsTransport),v.transceivers[A].rtpReceiver&&v.transceivers[A].rtpReceiver.setTransport(v.transceivers[0].dtlsTransport)),g.type==="offer"&&!U){j=v.transceivers[A]||v._createTransceiver(O),j.mid=Q,j.iceGatherer||(j.iceGatherer=v._createIceGatherer(A,P)),ze.length&&j.iceTransport.state==="new"&&(it&&(!P||A===0)?j.iceTransport.setRemoteCandidates(ze):ze.forEach(function(fe){a(j.iceTransport,fe)})),ge=c.RTCRtpReceiver.getCapabilities(O),l<15019&&(ge.codecs=ge.codecs.filter(function(fe){return fe.name!=="rtx"})),le=j.sendEncodingParameters||[{ssrc:(2*A+2)*1001}];var ve=!1;if(G==="sendrecv"||G==="sendonly"){if(ve=!j.rtpReceiver,oe=j.rtpReceiver||new c.RTCRtpReceiver(j.dtlsTransport,O),ve){var ue;de=oe.track,H&&H.stream==="-"||(H?(_[H.stream]||(_[H.stream]=new c.MediaStream,Object.defineProperty(_[H.stream],"id",{get:function(){return H.stream}})),Object.defineProperty(de,"id",{get:function(){return H.track}}),ue=_[H.stream]):(_.default||(_.default=new c.MediaStream),ue=_.default)),ue&&(u(de,ue),j.associatedRemoteMediaStreams.push(ue)),S.push([de,oe,ue])}}else j.rtpReceiver&&j.rtpReceiver.track&&(j.associatedRemoteMediaStreams.forEach(function(fe){var Ke=fe.getTracks().find(function(bt){return bt.id===j.rtpReceiver.track.id});Ke&&p(Ke,fe)}),j.associatedRemoteMediaStreams=[]);j.localCapabilities=ge,j.remoteCapabilities=se,j.rtpReceiver=oe,j.rtcpParameters=Ee,j.sendEncodingParameters=le,j.recvEncodingParameters=xe,v._transceive(v.transceivers[A],!1,ve)}else if(g.type==="answer"&&!U){j=v.transceivers[A],pe=j.iceGatherer,ie=j.iceTransport,he=j.dtlsTransport,oe=j.rtpReceiver,le=j.sendEncodingParameters,ge=j.localCapabilities,v.transceivers[A].recvEncodingParameters=xe,v.transceivers[A].remoteCapabilities=se,v.transceivers[A].rtcpParameters=Ee,ze.length&&ie.state==="new"&&((E||it)&&(!P||A===0)?ie.setRemoteCandidates(ze):ze.forEach(function(fe){a(j.iceTransport,fe)})),(!P||A===0)&&(ie.state==="new"&&ie.start(pe,Ge,"controlling"),he.state==="new"&&he.start(Ie));var lt=i(j.localCapabilities,j.remoteCapabilities),Pe=lt.codecs.filter(function(fe){return fe.name.toLowerCase()==="rtx"}).length;!Pe&&j.sendEncodingParameters[0].rtx&&delete j.sendEncodingParameters[0].rtx,v._transceive(j,G==="sendrecv"||G==="recvonly",G==="sendrecv"||G==="sendonly"),oe&&(G==="sendrecv"||G==="sendonly")?(de=oe.track,H?(_[H.stream]||(_[H.stream]=new c.MediaStream),u(de,_[H.stream]),S.push([de,oe,_[H.stream]])):(_.default||(_.default=new c.MediaStream),u(de,_.default),S.push([de,oe,_.default]))):delete j.rtpReceiver}}),v._dtlsRole===void 0&&(v._dtlsRole=g.type==="offer"?"active":"passive"),v._remoteDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-remote-offer"):v._updateSignalingState("stable"),Object.keys(_).forEach(function(R){var A=_[R];if(A.getTracks().length){if(v.remoteStreams.indexOf(A)===-1){v.remoteStreams.push(A);var B=new Event("addstream");B.stream=A,c.setTimeout(function(){v._dispatchEvent("addstream",B)})}S.forEach(function(O){var U=O[0],L=O[1];A.id===O[2].id&&m(v,U,L,[A])})}}),S.forEach(function(R){R[2]||m(v,R[0],R[1],[])}),c.setTimeout(function(){v&&v.transceivers&&v.transceivers.forEach(function(R){R.iceTransport&&R.iceTransport.state==="new"&&R.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),R.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},f.prototype.close=function(){this.transceivers.forEach(function(g){g.iceTransport&&g.iceTransport.stop(),g.dtlsTransport&&g.dtlsTransport.stop(),g.rtpSender&&g.rtpSender.stop(),g.rtpReceiver&&g.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},f.prototype._updateSignalingState=function(g){this.signalingState=g;var v=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",v)},f.prototype._maybeFireNegotiationNeeded=function(){var g=this;this.signalingState!=="stable"||this.needNegotiation===!0||(this.needNegotiation=!0,c.setTimeout(function(){if(g.needNegotiation){g.needNegotiation=!1;var v=new Event("negotiationneeded");g._dispatchEvent("negotiationneeded",v)}},0))},f.prototype._updateIceConnectionState=function(){var g,v={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(S){S.iceTransport&&!S.rejected&&v[S.iceTransport.state]++}),g="new",v.failed>0?g="failed":v.checking>0?g="checking":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0?g="connected":v.completed>0&&(g="completed"),g!==this.iceConnectionState){this.iceConnectionState=g;var _=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",_)}},f.prototype._updateConnectionState=function(){var g,v={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(S){S.iceTransport&&S.dtlsTransport&&!S.rejected&&(v[S.iceTransport.state]++,v[S.dtlsTransport.state]++)}),v.connected+=v.completed,g="new",v.failed>0?g="failed":v.connecting>0?g="connecting":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0&&(g="connected"),g!==this.connectionState){this.connectionState=g;var _=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",_)}},f.prototype.createOffer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createOffer after close"));var v=g.transceivers.filter(function(E){return E.kind==="audio"}).length,_=g.transceivers.filter(function(E){return E.kind==="video"}).length,S=arguments[0];if(S){if(S.mandatory||S.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");S.offerToReceiveAudio!==void 0&&(S.offerToReceiveAudio===!0?v=1:S.offerToReceiveAudio===!1?v=0:v=S.offerToReceiveAudio),S.offerToReceiveVideo!==void 0&&(S.offerToReceiveVideo===!0?_=1:S.offerToReceiveVideo===!1?_=0:_=S.offerToReceiveVideo)}for(g.transceivers.forEach(function(E){E.kind==="audio"?(v--,v<0&&(E.wantReceive=!1)):E.kind==="video"&&(_--,_<0&&(E.wantReceive=!1))});v>0||_>0;)v>0&&(g._createTransceiver("audio"),v--),_>0&&(g._createTransceiver("video"),_--);var M=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.transceivers.forEach(function(E,P){var z=E.track,R=E.kind,A=E.mid||r.generateIdentifier();E.mid=A,E.iceGatherer||(E.iceGatherer=g._createIceGatherer(P,g.usingBundle));var B=c.RTCRtpSender.getCapabilities(R);l<15019&&(B.codecs=B.codecs.filter(function(U){return U.name!=="rtx"})),B.codecs.forEach(function(U){U.name==="H264"&&U.parameters["level-asymmetry-allowed"]===void 0&&(U.parameters["level-asymmetry-allowed"]="1"),E.remoteCapabilities&&E.remoteCapabilities.codecs&&E.remoteCapabilities.codecs.forEach(function(L){U.name.toLowerCase()===L.name.toLowerCase()&&U.clockRate===L.clockRate&&(U.preferredPayloadType=L.payloadType)})}),B.headerExtensions.forEach(function(U){var L=E.remoteCapabilities&&E.remoteCapabilities.headerExtensions||[];L.forEach(function(G){U.uri===G.uri&&(U.id=G.id)})});var O=E.sendEncodingParameters||[{ssrc:(2*P+1)*1001}];z&&l>=15019&&R==="video"&&!O[0].rtx&&(O[0].rtx={ssrc:O[0].ssrc+1}),E.wantReceive&&(E.rtpReceiver=new c.RTCRtpReceiver(E.dtlsTransport,R)),E.localCapabilities=B,E.sendEncodingParameters=O}),g._config.bundlePolicy!=="max-compat"&&(M+="a=group:BUNDLE "+g.transceivers.map(function(E){return E.mid}).join(" ")+`\r
51
- `),M+=`a=ice-options:trickle\r
52
- `,g.transceivers.forEach(function(E,P){M+=t(E,E.localCapabilities,"offer",E.stream,g._dtlsRole),M+=`a=rtcp-rsize\r
53
- `,E.iceGatherer&&g.iceGatheringState!=="new"&&(P===0||!g.usingBundle)&&(E.iceGatherer.getLocalCandidates().forEach(function(z){z.component=1,M+="a="+r.writeCandidate(z)+`\r
54
- `}),E.iceGatherer.state==="completed"&&(M+=`a=end-of-candidates\r
55
- `))});var T=new c.RTCSessionDescription({type:"offer",sdp:M});return Promise.resolve(T)},f.prototype.createAnswer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createAnswer after close"));if(!(g.signalingState==="have-remote-offer"||g.signalingState==="have-local-pranswer"))return Promise.reject(o("InvalidStateError","Can not call createAnswer in signalingState "+g.signalingState));var v=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.usingBundle&&(v+="a=group:BUNDLE "+g.transceivers.map(function(M){return M.mid}).join(" ")+`\r
50
+ `,_._localDescription.sdp=r.getDescription(_._localDescription.sdp)+A.join("");var B=_.transceivers.every(function(I){return I.iceGatherer&&I.iceGatherer.state==="completed"});_.iceGatheringState!=="gathering"&&(_.iceGatheringState="gathering",_._emitGatheringStateChange()),O||_._dispatchEvent("icecandidate",E),B&&(_._dispatchEvent("icecandidate",new Event("icecandidate")),_.iceGatheringState="complete",_._emitGatheringStateChange())}},c.setTimeout(function(){T.forEach(function(M){S.onlocalcandidate(M)})},0)}},f.prototype._createIceAndDtlsTransports=function(){var g=this,v=new c.RTCIceTransport(null);v.onicestatechange=function(){g._updateIceConnectionState(),g._updateConnectionState()};var _=new c.RTCDtlsTransport(v);return _.ondtlsstatechange=function(){g._updateConnectionState()},_.onerror=function(){Object.defineProperty(_,"state",{value:"failed",writable:!0}),g._updateConnectionState()},{iceTransport:v,dtlsTransport:_}},f.prototype._disposeIceAndDtlsTransports=function(g){var v=this.transceivers[g].iceGatherer;v&&(delete v.onlocalcandidate,delete this.transceivers[g].iceGatherer);var _=this.transceivers[g].iceTransport;_&&(delete _.onicestatechange,delete this.transceivers[g].iceTransport);var S=this.transceivers[g].dtlsTransport;S&&(delete S.ondtlsstatechange,delete S.onerror,delete this.transceivers[g].dtlsTransport)},f.prototype._transceive=function(g,v,_){var S=i(g.localCapabilities,g.remoteCapabilities);v&&g.rtpSender&&(S.encodings=g.sendEncodingParameters,S.rtcp={cname:r.localCName,compound:g.rtcpParameters.compound},g.recvEncodingParameters.length&&(S.rtcp.ssrc=g.recvEncodingParameters[0].ssrc),g.rtpSender.send(S)),_&&g.rtpReceiver&&S.codecs.length>0&&(g.kind==="video"&&g.recvEncodingParameters&&l<15019&&g.recvEncodingParameters.forEach(function(T){delete T.rtx}),g.recvEncodingParameters.length?S.encodings=g.recvEncodingParameters:S.encodings=[{}],S.rtcp={compound:g.rtcpParameters.compound},g.rtcpParameters.cname&&(S.rtcp.cname=g.rtcpParameters.cname),g.sendEncodingParameters.length&&(S.rtcp.ssrc=g.sendEncodingParameters[0].ssrc),g.rtpReceiver.receive(S))},f.prototype.setLocalDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setLocalDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set local "+g.type+" in state "+v.signalingState));var _,S;if(g.type==="offer")_=r.splitSections(g.sdp),S=_.shift(),_.forEach(function(M,E){var P=r.parseRtpParameters(M);v.transceivers[E].localCapabilities=P}),v.transceivers.forEach(function(M,E){v._gather(M.mid,E)});else if(g.type==="answer"){_=r.splitSections(v._remoteDescription.sdp),S=_.shift();var T=r.matchPrefix(S,"a=ice-lite").length>0;_.forEach(function(M,E){var P=v.transceivers[E],O=P.iceGatherer,R=P.iceTransport,A=P.dtlsTransport,B=P.localCapabilities,I=P.remoteCapabilities,U=r.isRejected(M)&&r.matchPrefix(M,"a=bundle-only").length===0;if(!U&&!P.rejected){var L=r.getIceParameters(M,S),j=r.getDtlsParameters(M,S);T&&(j.role="server"),(!v.usingBundle||E===0)&&(v._gather(P.mid,E),R.state==="new"&&R.start(O,L,T?"controlling":"controlled"),A.state==="new"&&A.start(j));var H=i(B,I);v._transceive(P,H.codecs.length>0,!1)}})}return v._localDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-local-offer"):v._updateSignalingState("stable"),Promise.resolve()},f.prototype.setRemoteDescription=function(g){var v=this;if(["offer","answer"].indexOf(g.type)===-1)return Promise.reject(o("TypeError",'Unsupported type "'+g.type+'"'));if(!s("setRemoteDescription",g.type,v.signalingState)||v._isClosed)return Promise.reject(o("InvalidStateError","Can not set remote "+g.type+" in state "+v.signalingState));var _={};v.remoteStreams.forEach(function(R){_[R.id]=R});var S=[],T=r.splitSections(g.sdp),M=T.shift(),E=r.matchPrefix(M,"a=ice-lite").length>0,P=r.matchPrefix(M,"a=group:BUNDLE ").length>0;v.usingBundle=P;var O=r.matchPrefix(M,"a=ice-options:")[0];return O?v.canTrickleIceCandidates=O.substr(14).split(" ").indexOf("trickle")>=0:v.canTrickleIceCandidates=!1,T.forEach(function(R,A){var B=r.splitLines(R),I=r.getKind(R),U=r.isRejected(R)&&r.matchPrefix(R,"a=bundle-only").length===0,L=B[0].substr(2).split(" ")[2],j=r.getDirection(R,M),H=r.parseMsid(R),Q=r.getMid(R)||r.generateIdentifier();if(U||I==="application"&&(L==="DTLS/SCTP"||L==="UDP/DTLS/SCTP")){v.transceivers[A]={mid:Q,kind:I,protocol:L,rejected:!0};return}!U&&v.transceivers[A]&&v.transceivers[A].rejected&&(v.transceivers[A]=v._createTransceiver(I,!0));var J,pe,ie,he,oe,le,xe,ge,de,se=r.parseRtpParameters(R),Ge,Ie;U||(Ge=r.getIceParameters(R,M),Ie=r.getDtlsParameters(R,M),Ie.role="client"),xe=r.parseRtpEncodingParameters(R);var Ee=r.parseRtcpParameters(R),it=r.matchPrefix(R,"a=end-of-candidates",M).length>0,ze=r.matchPrefix(R,"a=candidate:").map(function(fe){return r.parseCandidate(fe)}).filter(function(fe){return fe.component===1});if((g.type==="offer"||g.type==="answer")&&!U&&P&&A>0&&v.transceivers[A]&&(v._disposeIceAndDtlsTransports(A),v.transceivers[A].iceGatherer=v.transceivers[0].iceGatherer,v.transceivers[A].iceTransport=v.transceivers[0].iceTransport,v.transceivers[A].dtlsTransport=v.transceivers[0].dtlsTransport,v.transceivers[A].rtpSender&&v.transceivers[A].rtpSender.setTransport(v.transceivers[0].dtlsTransport),v.transceivers[A].rtpReceiver&&v.transceivers[A].rtpReceiver.setTransport(v.transceivers[0].dtlsTransport)),g.type==="offer"&&!U){J=v.transceivers[A]||v._createTransceiver(I),J.mid=Q,J.iceGatherer||(J.iceGatherer=v._createIceGatherer(A,P)),ze.length&&J.iceTransport.state==="new"&&(it&&(!P||A===0)?J.iceTransport.setRemoteCandidates(ze):ze.forEach(function(fe){a(J.iceTransport,fe)})),ge=c.RTCRtpReceiver.getCapabilities(I),l<15019&&(ge.codecs=ge.codecs.filter(function(fe){return fe.name!=="rtx"})),le=J.sendEncodingParameters||[{ssrc:(2*A+2)*1001}];var ve=!1;if(j==="sendrecv"||j==="sendonly"){if(ve=!J.rtpReceiver,oe=J.rtpReceiver||new c.RTCRtpReceiver(J.dtlsTransport,I),ve){var ue;de=oe.track,H&&H.stream==="-"||(H?(_[H.stream]||(_[H.stream]=new c.MediaStream,Object.defineProperty(_[H.stream],"id",{get:function(){return H.stream}})),Object.defineProperty(de,"id",{get:function(){return H.track}}),ue=_[H.stream]):(_.default||(_.default=new c.MediaStream),ue=_.default)),ue&&(u(de,ue),J.associatedRemoteMediaStreams.push(ue)),S.push([de,oe,ue])}}else J.rtpReceiver&&J.rtpReceiver.track&&(J.associatedRemoteMediaStreams.forEach(function(fe){var Ke=fe.getTracks().find(function(bt){return bt.id===J.rtpReceiver.track.id});Ke&&p(Ke,fe)}),J.associatedRemoteMediaStreams=[]);J.localCapabilities=ge,J.remoteCapabilities=se,J.rtpReceiver=oe,J.rtcpParameters=Ee,J.sendEncodingParameters=le,J.recvEncodingParameters=xe,v._transceive(v.transceivers[A],!1,ve)}else if(g.type==="answer"&&!U){J=v.transceivers[A],pe=J.iceGatherer,ie=J.iceTransport,he=J.dtlsTransport,oe=J.rtpReceiver,le=J.sendEncodingParameters,ge=J.localCapabilities,v.transceivers[A].recvEncodingParameters=xe,v.transceivers[A].remoteCapabilities=se,v.transceivers[A].rtcpParameters=Ee,ze.length&&ie.state==="new"&&((E||it)&&(!P||A===0)?ie.setRemoteCandidates(ze):ze.forEach(function(fe){a(J.iceTransport,fe)})),(!P||A===0)&&(ie.state==="new"&&ie.start(pe,Ge,"controlling"),he.state==="new"&&he.start(Ie));var lt=i(J.localCapabilities,J.remoteCapabilities),Pe=lt.codecs.filter(function(fe){return fe.name.toLowerCase()==="rtx"}).length;!Pe&&J.sendEncodingParameters[0].rtx&&delete J.sendEncodingParameters[0].rtx,v._transceive(J,j==="sendrecv"||j==="recvonly",j==="sendrecv"||j==="sendonly"),oe&&(j==="sendrecv"||j==="sendonly")?(de=oe.track,H?(_[H.stream]||(_[H.stream]=new c.MediaStream),u(de,_[H.stream]),S.push([de,oe,_[H.stream]])):(_.default||(_.default=new c.MediaStream),u(de,_.default),S.push([de,oe,_.default]))):delete J.rtpReceiver}}),v._dtlsRole===void 0&&(v._dtlsRole=g.type==="offer"?"active":"passive"),v._remoteDescription={type:g.type,sdp:g.sdp},g.type==="offer"?v._updateSignalingState("have-remote-offer"):v._updateSignalingState("stable"),Object.keys(_).forEach(function(R){var A=_[R];if(A.getTracks().length){if(v.remoteStreams.indexOf(A)===-1){v.remoteStreams.push(A);var B=new Event("addstream");B.stream=A,c.setTimeout(function(){v._dispatchEvent("addstream",B)})}S.forEach(function(I){var U=I[0],L=I[1];A.id===I[2].id&&m(v,U,L,[A])})}}),S.forEach(function(R){R[2]||m(v,R[0],R[1],[])}),c.setTimeout(function(){v&&v.transceivers&&v.transceivers.forEach(function(R){R.iceTransport&&R.iceTransport.state==="new"&&R.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),R.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},f.prototype.close=function(){this.transceivers.forEach(function(g){g.iceTransport&&g.iceTransport.stop(),g.dtlsTransport&&g.dtlsTransport.stop(),g.rtpSender&&g.rtpSender.stop(),g.rtpReceiver&&g.rtpReceiver.stop()}),this._isClosed=!0,this._updateSignalingState("closed")},f.prototype._updateSignalingState=function(g){this.signalingState=g;var v=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",v)},f.prototype._maybeFireNegotiationNeeded=function(){var g=this;this.signalingState!=="stable"||this.needNegotiation===!0||(this.needNegotiation=!0,c.setTimeout(function(){if(g.needNegotiation){g.needNegotiation=!1;var v=new Event("negotiationneeded");g._dispatchEvent("negotiationneeded",v)}},0))},f.prototype._updateIceConnectionState=function(){var g,v={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(S){S.iceTransport&&!S.rejected&&v[S.iceTransport.state]++}),g="new",v.failed>0?g="failed":v.checking>0?g="checking":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0?g="connected":v.completed>0&&(g="completed"),g!==this.iceConnectionState){this.iceConnectionState=g;var _=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",_)}},f.prototype._updateConnectionState=function(){var g,v={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach(function(S){S.iceTransport&&S.dtlsTransport&&!S.rejected&&(v[S.iceTransport.state]++,v[S.dtlsTransport.state]++)}),v.connected+=v.completed,g="new",v.failed>0?g="failed":v.connecting>0?g="connecting":v.disconnected>0?g="disconnected":v.new>0?g="new":v.connected>0&&(g="connected"),g!==this.connectionState){this.connectionState=g;var _=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",_)}},f.prototype.createOffer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createOffer after close"));var v=g.transceivers.filter(function(E){return E.kind==="audio"}).length,_=g.transceivers.filter(function(E){return E.kind==="video"}).length,S=arguments[0];if(S){if(S.mandatory||S.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");S.offerToReceiveAudio!==void 0&&(S.offerToReceiveAudio===!0?v=1:S.offerToReceiveAudio===!1?v=0:v=S.offerToReceiveAudio),S.offerToReceiveVideo!==void 0&&(S.offerToReceiveVideo===!0?_=1:S.offerToReceiveVideo===!1?_=0:_=S.offerToReceiveVideo)}for(g.transceivers.forEach(function(E){E.kind==="audio"?(v--,v<0&&(E.wantReceive=!1)):E.kind==="video"&&(_--,_<0&&(E.wantReceive=!1))});v>0||_>0;)v>0&&(g._createTransceiver("audio"),v--),_>0&&(g._createTransceiver("video"),_--);var T=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.transceivers.forEach(function(E,P){var O=E.track,R=E.kind,A=E.mid||r.generateIdentifier();E.mid=A,E.iceGatherer||(E.iceGatherer=g._createIceGatherer(P,g.usingBundle));var B=c.RTCRtpSender.getCapabilities(R);l<15019&&(B.codecs=B.codecs.filter(function(U){return U.name!=="rtx"})),B.codecs.forEach(function(U){U.name==="H264"&&U.parameters["level-asymmetry-allowed"]===void 0&&(U.parameters["level-asymmetry-allowed"]="1"),E.remoteCapabilities&&E.remoteCapabilities.codecs&&E.remoteCapabilities.codecs.forEach(function(L){U.name.toLowerCase()===L.name.toLowerCase()&&U.clockRate===L.clockRate&&(U.preferredPayloadType=L.payloadType)})}),B.headerExtensions.forEach(function(U){var L=E.remoteCapabilities&&E.remoteCapabilities.headerExtensions||[];L.forEach(function(j){U.uri===j.uri&&(U.id=j.id)})});var I=E.sendEncodingParameters||[{ssrc:(2*P+1)*1001}];O&&l>=15019&&R==="video"&&!I[0].rtx&&(I[0].rtx={ssrc:I[0].ssrc+1}),E.wantReceive&&(E.rtpReceiver=new c.RTCRtpReceiver(E.dtlsTransport,R)),E.localCapabilities=B,E.sendEncodingParameters=I}),g._config.bundlePolicy!=="max-compat"&&(T+="a=group:BUNDLE "+g.transceivers.map(function(E){return E.mid}).join(" ")+`\r
51
+ `),T+=`a=ice-options:trickle\r
52
+ `,g.transceivers.forEach(function(E,P){T+=t(E,E.localCapabilities,"offer",E.stream,g._dtlsRole),T+=`a=rtcp-rsize\r
53
+ `,E.iceGatherer&&g.iceGatheringState!=="new"&&(P===0||!g.usingBundle)&&(E.iceGatherer.getLocalCandidates().forEach(function(O){O.component=1,T+="a="+r.writeCandidate(O)+`\r
54
+ `}),E.iceGatherer.state==="completed"&&(T+=`a=end-of-candidates\r
55
+ `))});var M=new c.RTCSessionDescription({type:"offer",sdp:T});return Promise.resolve(M)},f.prototype.createAnswer=function(){var g=this;if(g._isClosed)return Promise.reject(o("InvalidStateError","Can not call createAnswer after close"));if(!(g.signalingState==="have-remote-offer"||g.signalingState==="have-local-pranswer"))return Promise.reject(o("InvalidStateError","Can not call createAnswer in signalingState "+g.signalingState));var v=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.usingBundle&&(v+="a=group:BUNDLE "+g.transceivers.map(function(T){return T.mid}).join(" ")+`\r
56
56
  `),v+=`a=ice-options:trickle\r
57
- `;var _=r.getMediaSections(g._remoteDescription.sdp).length;g.transceivers.forEach(function(M,T){if(!(T+1>_)){if(M.rejected){M.kind==="application"?M.protocol==="DTLS/SCTP"?v+=`m=application 0 DTLS/SCTP 5000\r
58
- `:v+="m=application 0 "+M.protocol+` webrtc-datachannel\r
59
- `:M.kind==="audio"?v+=`m=audio 0 UDP/TLS/RTP/SAVPF 0\r
57
+ `;var _=r.getMediaSections(g._remoteDescription.sdp).length;g.transceivers.forEach(function(T,M){if(!(M+1>_)){if(T.rejected){T.kind==="application"?T.protocol==="DTLS/SCTP"?v+=`m=application 0 DTLS/SCTP 5000\r
58
+ `:v+="m=application 0 "+T.protocol+` webrtc-datachannel\r
59
+ `:T.kind==="audio"?v+=`m=audio 0 UDP/TLS/RTP/SAVPF 0\r
60
60
  a=rtpmap:0 PCMU/8000\r
61
- `:M.kind==="video"&&(v+=`m=video 0 UDP/TLS/RTP/SAVPF 120\r
61
+ `:T.kind==="video"&&(v+=`m=video 0 UDP/TLS/RTP/SAVPF 120\r
62
62
  a=rtpmap:120 VP8/90000\r
63
63
  `),v+=`c=IN IP4 0.0.0.0\r
64
64
  a=inactive\r
65
- a=mid:`+M.mid+`\r
66
- `;return}if(M.stream){var E;M.kind==="audio"?E=M.stream.getAudioTracks()[0]:M.kind==="video"&&(E=M.stream.getVideoTracks()[0]),E&&l>=15019&&M.kind==="video"&&!M.sendEncodingParameters[0].rtx&&(M.sendEncodingParameters[0].rtx={ssrc:M.sendEncodingParameters[0].ssrc+1})}var P=i(M.localCapabilities,M.remoteCapabilities),z=P.codecs.filter(function(R){return R.name.toLowerCase()==="rtx"}).length;!z&&M.sendEncodingParameters[0].rtx&&delete M.sendEncodingParameters[0].rtx,v+=t(M,P,"answer",M.stream,g._dtlsRole),M.rtcpParameters&&M.rtcpParameters.reducedSize&&(v+=`a=rtcp-rsize\r
67
- `)}});var S=new c.RTCSessionDescription({type:"answer",sdp:v});return Promise.resolve(S)},f.prototype.addIceCandidate=function(g){var v=this,_;return g&&!(g.sdpMLineIndex!==void 0||g.sdpMid)?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(S,M){if(v._remoteDescription)if(!g||g.candidate==="")for(var T=0;T<v.transceivers.length&&!(!v.transceivers[T].rejected&&(v.transceivers[T].iceTransport.addRemoteCandidate({}),_=r.getMediaSections(v._remoteDescription.sdp),_[T]+=`a=end-of-candidates\r
68
- `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+_.join(""),v.usingBundle));T++);else{var E=g.sdpMLineIndex;if(g.sdpMid){for(var P=0;P<v.transceivers.length;P++)if(v.transceivers[P].mid===g.sdpMid){E=P;break}}var z=v.transceivers[E];if(z){if(z.rejected)return S();var R=Object.keys(g.candidate).length>0?r.parseCandidate(g.candidate):{};if(R.protocol==="tcp"&&(R.port===0||R.port===9)||R.component&&R.component!==1)return S();if((E===0||E>0&&z.iceTransport!==v.transceivers[0].iceTransport)&&!a(z.iceTransport,R))return M(o("OperationError","Can not add ICE candidate"));var A=g.candidate.trim();A.indexOf("a=")===0&&(A=A.substr(2)),_=r.getMediaSections(v._remoteDescription.sdp),_[E]+="a="+(R.type?A:"end-of-candidates")+`\r
69
- `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+_.join("")}else return M(o("OperationError","Can not add ICE candidate"))}else return M(o("InvalidStateError","Can not add ICE candidate without a remote description"));S()})},f.prototype.getStats=function(g){if(g&&g instanceof c.MediaStreamTrack){var v=null;if(this.transceivers.forEach(function(S){S.rtpSender&&S.rtpSender.track===g?v=S.rtpSender:S.rtpReceiver&&S.rtpReceiver.track===g&&(v=S.rtpReceiver)}),!v)throw o("InvalidAccessError","Invalid selector.");return v.getStats()}var _=[];return this.transceivers.forEach(function(S){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(M){S[M]&&_.push(S[M].getStats())})}),Promise.all(_).then(function(S){var M=new Map;return S.forEach(function(T){T.forEach(function(E){M.set(E.id,E)})}),M})};var x=["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"];x.forEach(function(g){var v=c[g];if(v&&v.prototype&&v.prototype.getStats){var _=v.prototype.getStats;v.prototype.getStats=function(){return _.apply(this).then(function(S){var M=new Map;return Object.keys(S).forEach(function(T){S[T].type=e(S[T]),M.set(T,S[T])}),M})}}});var w=["createOffer","createAnswer"];return w.forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var _=arguments;return typeof _[0]=="function"||typeof _[1]=="function"?v.apply(this,[arguments[2]]).then(function(S){typeof _[0]=="function"&&_[0].apply(null,[S])},function(S){typeof _[1]=="function"&&_[1].apply(null,[S])}):v.apply(this,arguments)}}),w=["setLocalDescription","setRemoteDescription","addIceCandidate"],w.forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var _=arguments;return typeof _[1]=="function"||typeof _[2]=="function"?v.apply(this,arguments).then(function(){typeof _[1]=="function"&&_[1].apply(null)},function(S){typeof _[2]=="function"&&_[2].apply(null,[S])}):v.apply(this,arguments)}}),["getStats"].forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var _=arguments;return typeof _[1]=="function"?v.apply(this,arguments).then(function(){typeof _[1]=="function"&&_[1].apply(null)}):v.apply(this,arguments)}}),f},Ms}var gu=yu();const vu=lr(gu);function za(r){const e=r&&r.navigator,t=function(i){return{name:{PermissionDeniedError:"NotAllowedError"}[i.name]||i.name,message:i.message,constraint:i.constraint,toString(){return this.name}}},n=e.mediaDevices.getUserMedia.bind(e.mediaDevices);Object.getOwnPropertyDescriptor(e.mediaDevices,"getUserMedia")?.writable&&(e.mediaDevices.getUserMedia=function(i){return n(i).catch(s=>Promise.reject(t(s)))})}function Ba(r){"getDisplayMedia"in r.navigator&&r.navigator.mediaDevices&&(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||(r.navigator.mediaDevices.getDisplayMedia=r.navigator.getDisplayMedia.bind(r.navigator)))}function Cs(r,e){if(r.RTCIceGatherer&&(r.RTCIceCandidate||(r.RTCIceCandidate=function(n){return n}),r.RTCSessionDescription||(r.RTCSessionDescription=function(n){return n}),e.version<15025)){const n=Object.getOwnPropertyDescriptor(r.MediaStreamTrack.prototype,"enabled");Object.defineProperty(r.MediaStreamTrack.prototype,"enabled",{set(i){n.set.call(this,i);const s=new Event("enabled");s.enabled=i,this.dispatchEvent(s)}})}r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)&&Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=new r.RTCDtmfSender(this):this.track.kind==="video"&&(this._dtmf=null)),this._dtmf}}),r.RTCDtmfSender&&!r.RTCDTMFSender&&(r.RTCDTMFSender=r.RTCDtmfSender);const t=vu(r,e.version);r.RTCPeerConnection=function(n){return n&&n.iceServers&&(n.iceServers=mu(n.iceServers,e.version),ws("ICE servers after filtering:",n.iceServers)),new t(n)},r.RTCPeerConnection.prototype=t.prototype}function Na(r){r.RTCRtpSender&&!("replaceTrack"in r.RTCRtpSender.prototype)&&(r.RTCRtpSender.prototype.replaceTrack=r.RTCRtpSender.prototype.setTrack)}const Ua=Object.freeze(Object.defineProperty({__proto__:null,shimGetDisplayMedia:Ba,shimGetUserMedia:za,shimPeerConnection:Cs,shimReplaceTrack:Na},Symbol.toStringTag,{value:"Module"}));function Da(r,e){const t=r&&r.navigator,n=r&&r.MediaStreamTrack;if(t.getUserMedia=function(i,s,a){ur("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(i).then(s,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const i=function(a,o,c){o in a&&!(c in a)&&(a[c]=a[o],delete a[o])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),i(a.audio,"autoGainControl","mozAutoGainControl"),i(a.audio,"noiseSuppression","mozNoiseSuppression")),s(a)}),n&&n.prototype.getSettings){const a=n.prototype.getSettings;n.prototype.getSettings=function(){const o=a.apply(this,arguments);return i(o,"mozAutoGainControl","autoGainControl"),i(o,"mozNoiseSuppression","noiseSuppression"),o}}if(n&&n.prototype.applyConstraints){const a=n.prototype.applyConstraints;n.prototype.applyConstraints=function(o){return this.kind==="audio"&&typeof o=="object"&&(o=JSON.parse(JSON.stringify(o)),i(o,"autoGainControl","mozAutoGainControl"),i(o,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[o])}}}}function Su(r,e){r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||r.navigator.mediaDevices&&(r.navigator.mediaDevices.getDisplayMedia=function(t){if(!(t&&t.video)){const n=new DOMException("getDisplayMedia without video constraints is undefined");return n.name="NotFoundError",n.code=8,Promise.reject(n)}return t.video===!0?t.video={mediaSource:e}:t.video.mediaSource=e,r.navigator.mediaDevices.getUserMedia(t)})}function La(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Es(r,e){if(typeof r!="object"||!(r.RTCPeerConnection||r.mozRTCPeerConnection))return;!r.RTCPeerConnection&&r.mozRTCPeerConnection&&(r.RTCPeerConnection=r.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){const s=r.RTCPeerConnection.prototype[i],a={[i](){return arguments[0]=new(i==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)}};r.RTCPeerConnection.prototype[i]=a[i]});const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[i,s,a]=arguments;return n.apply(this,[i||null]).then(o=>{if(e.version<53&&!s)try{o.forEach(c=>{c.type=t[c.type]||c.type})}catch(c){if(c.name!=="TypeError")throw c;o.forEach((l,u)=>{o.set(u,Object.assign({},l,{type:t[l.type]||l.type}))})}return o}).then(s,a)}}function Fa(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpSender.prototype)return;const e=r.RTCPeerConnection.prototype.getSenders;e&&(r.RTCPeerConnection.prototype.getSenders=function(){const n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n});const t=r.RTCPeerConnection.prototype.addTrack;t&&(r.RTCPeerConnection.prototype.addTrack=function(){const n=t.apply(this,arguments);return n._pc=this,n}),r.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Va(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpReceiver.prototype)return;const e=r.RTCPeerConnection.prototype.getReceivers;e&&(r.RTCPeerConnection.prototype.getReceivers=function(){const t=e.apply(this,[]);return t.forEach(n=>n._pc=this),t}),In(r,"track",t=>(t.receiver._pc=t.srcElement,t)),r.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function ja(r){!r.RTCPeerConnection||"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(e){ur("removeStream","removeTrack"),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function Ja(r){r.DataChannel&&!r.RTCDataChannel&&(r.RTCDataChannel=r.DataChannel)}function Ga(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.addTransceiver;e&&(r.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const t=arguments[1],n=t&&"sendEncodings"in t;n&&t.sendEncodings.forEach(s=>{if("rid"in s&&!/^[a-z0-9]{0,16}$/i.test(s.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in s&&!(parseFloat(s.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in s&&!(parseFloat(s.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const i=e.apply(this,arguments);if(n){const{sender:s}=i,a=s.getParameters();(!("encodings"in a)||a.encodings.length===1&&Object.keys(a.encodings[0]).length===0)&&(a.encodings=t.sendEncodings,s.sendEncodings=t.sendEncodings,this.setParametersPromises.push(s.setParameters(a).then(()=>{delete s.sendEncodings}).catch(()=>{delete s.sendEncodings})))}return i})}function Wa(r){if(!(typeof r=="object"&&r.RTCRtpSender))return;const e=r.RTCRtpSender.prototype.getParameters;e&&(r.RTCRtpSender.prototype.getParameters=function(){const t=e.apply(this,arguments);return"encodings"in t||(t.encodings=[].concat(this.sendEncodings||[{}])),t})}function Ha(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function qa(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createAnswer;r.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}const Xa=Object.freeze(Object.defineProperty({__proto__:null,shimAddTransceiver:Ga,shimCreateAnswer:qa,shimCreateOffer:Ha,shimGetDisplayMedia:Su,shimGetParameters:Wa,shimGetUserMedia:Da,shimOnTrack:La,shimPeerConnection:Es,shimRTCDataChannel:Ja,shimReceiverGetStats:Va,shimRemoveStream:ja,shimSenderGetStats:Fa},Symbol.toStringTag,{value:"Module"}));function Ya(r){if(!(typeof r!="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(t){this._localStreams||(this._localStreams=[]),this._localStreams.includes(t)||this._localStreams.push(t),t.getAudioTracks().forEach(n=>e.call(this,n,t)),t.getVideoTracks().forEach(n=>e.call(this,n,t))},r.RTCPeerConnection.prototype.addTrack=function(t,...n){return n&&n.forEach(i=>{this._localStreams?this._localStreams.includes(i)||this._localStreams.push(i):this._localStreams=[i]}),e.apply(this,arguments)}}"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(t===-1)return;this._localStreams.splice(t,1);const n=e.getTracks();this.getSenders().forEach(i=>{n.includes(i.track)&&this.removeTrack(i)})})}}function Za(r){if(!(typeof r!="object"||!r.RTCPeerConnection)&&("getRemoteStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in r.RTCPeerConnection.prototype))){Object.defineProperty(r.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=n=>{n.streams.forEach(i=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(i))return;this._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,this.dispatchEvent(s)})})}});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){const t=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(n){n.streams.forEach(i=>{if(t._remoteStreams||(t._remoteStreams=[]),t._remoteStreams.indexOf(i)>=0)return;t._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,t.dispatchEvent(s)})}),e.apply(t,arguments)}}}function Ka(r){if(typeof r!="object"||!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype,t=e.createOffer,n=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(c,l){const u=arguments.length>=2?arguments[2]:arguments[0],p=t.apply(this,[u]);return l?(p.then(c,l),Promise.resolve()):p},e.createAnswer=function(c,l){const u=arguments.length>=2?arguments[2]:arguments[0],p=n.apply(this,[u]);return l?(p.then(c,l),Promise.resolve()):p};let o=function(c,l,u){const p=i.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p};e.setLocalDescription=o,o=function(c,l,u){const p=s.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p},e.setRemoteDescription=o,o=function(c,l,u){const p=a.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p},e.addIceCandidate=o}function Qa(r){const e=r&&r.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,n=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=i=>n($a(i))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(t,n,i){e.mediaDevices.getUserMedia(t).then(n,i)}.bind(e))}function $a(r){return r&&r.video!==void 0?Object.assign({},r,{video:ga(r.video)}):r}function ec(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection;r.RTCPeerConnection=function(t,n){if(t&&t.iceServers){const i=[];for(let s=0;s<t.iceServers.length;s++){let a=t.iceServers[s];!a.hasOwnProperty("urls")&&a.hasOwnProperty("url")?(ur("RTCIceServer.url","RTCIceServer.urls"),a=JSON.parse(JSON.stringify(a)),a.urls=a.url,delete a.url,i.push(a)):i.push(t.iceServers[s])}t.iceServers=i}return new e(t,n)},r.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(r.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function tc(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function nc(r){const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(t){if(t){typeof t.offerToReceiveAudio<"u"&&(t.offerToReceiveAudio=!!t.offerToReceiveAudio);const n=this.getTransceivers().find(s=>s.receiver.track.kind==="audio");t.offerToReceiveAudio===!1&&n?n.direction==="sendrecv"?n.setDirection?n.setDirection("sendonly"):n.direction="sendonly":n.direction==="recvonly"&&(n.setDirection?n.setDirection("inactive"):n.direction="inactive"):t.offerToReceiveAudio===!0&&!n&&this.addTransceiver("audio"),typeof t.offerToReceiveVideo<"u"&&(t.offerToReceiveVideo=!!t.offerToReceiveVideo);const i=this.getTransceivers().find(s=>s.receiver.track.kind==="video");t.offerToReceiveVideo===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):t.offerToReceiveVideo===!0&&!i&&this.addTransceiver("video")}return e.apply(this,arguments)}}function ic(r){typeof r!="object"||r.AudioContext||(r.AudioContext=r.webkitAudioContext)}const rc=Object.freeze(Object.defineProperty({__proto__:null,shimAudioContext:ic,shimCallbacksAPI:Ka,shimConstraints:$a,shimCreateOfferLegacy:nc,shimGetUserMedia:Qa,shimLocalStreamsAPI:Ya,shimRTCIceServerUrls:ec,shimRemoteStreamsAPI:Za,shimTrackEventTransceiver:tc},Symbol.toStringTag,{value:"Module"}));var bu=Oa();const hr=lr(bu);function dr(r){if(!r.RTCIceCandidate||r.RTCIceCandidate&&"foundation"in r.RTCIceCandidate.prototype)return;const e=r.RTCIceCandidate;r.RTCIceCandidate=function(t){if(typeof t=="object"&&t.candidate&&t.candidate.indexOf("a=")===0&&(t=JSON.parse(JSON.stringify(t)),t.candidate=t.candidate.substr(2)),t.candidate&&t.candidate.length){const n=new e(t),i=hr.parseCandidate(t.candidate),s=Object.assign(n,i);return s.toJSON=function(){return{candidate:s.candidate,sdpMid:s.sdpMid,sdpMLineIndex:s.sdpMLineIndex,usernameFragment:s.usernameFragment}},s}return new e(t)},r.RTCIceCandidate.prototype=e.prototype,In(r,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new r.RTCIceCandidate(t.candidate),writable:"false"}),t))}function $n(r,e){if(!r.RTCPeerConnection)return;"sctp"in r.RTCPeerConnection.prototype||Object.defineProperty(r.RTCPeerConnection.prototype,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp}});const t=function(o){if(!o||!o.sdp)return!1;const c=hr.splitSections(o.sdp);return c.shift(),c.some(l=>{const u=hr.parseMLine(l);return u&&u.kind==="application"&&u.protocol.indexOf("SCTP")!==-1})},n=function(o){const c=o.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(c===null||c.length<2)return-1;const l=parseInt(c[1],10);return l!==l?-1:l},i=function(o){let c=65536;return e.browser==="firefox"&&(e.version<57?o===-1?c=16384:c=2147483637:e.version<60?c=e.version===57?65535:65536:c=2147483637),c},s=function(o,c){let l=65536;e.browser==="firefox"&&e.version===57&&(l=65535);const u=hr.matchPrefix(o.sdp,"a=max-message-size:");return u.length>0?l=parseInt(u[0].substr(19),10):e.browser==="firefox"&&c!==-1&&(l=2147483637),l},a=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){const{sdpSemantics:o}=this.getConfiguration();o==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){const o=n(arguments[0]),c=i(o),l=s(arguments[0],o);let u;c===0&&l===0?u=Number.POSITIVE_INFINITY:c===0||l===0?u=Math.max(c,l):u=Math.min(c,l);const p={};Object.defineProperty(p,"maxMessageSize",{get(){return u}}),this._sctp=p}return a.apply(this,arguments)}}function ei(r){if(!(r.RTCPeerConnection&&"createDataChannel"in r.RTCPeerConnection.prototype))return;function e(n,i){const s=n.send;n.send=function(){const a=arguments[0],o=a.length||a.size||a.byteLength;if(n.readyState==="open"&&i.sctp&&o>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return s.apply(n,arguments)}}const t=r.RTCPeerConnection.prototype.createDataChannel;r.RTCPeerConnection.prototype.createDataChannel=function(){const n=t.apply(this,arguments);return e(n,this),n},In(r,"datachannel",n=>(e(n.channel,n.target),n))}function Ps(r){if(!r.RTCPeerConnection||"connectionState"in r.RTCPeerConnection.prototype)return;const e=r.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(t=>{const n=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=i=>{const s=i.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;const a=new Event("connectionstatechange",i);s.dispatchEvent(a)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}function ks(r,e){if(!r.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e.version>=605)return;const t=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(n){if(n&&n.sdp&&n.sdp.indexOf(`
65
+ a=mid:`+T.mid+`\r
66
+ `;return}if(T.stream){var E;T.kind==="audio"?E=T.stream.getAudioTracks()[0]:T.kind==="video"&&(E=T.stream.getVideoTracks()[0]),E&&l>=15019&&T.kind==="video"&&!T.sendEncodingParameters[0].rtx&&(T.sendEncodingParameters[0].rtx={ssrc:T.sendEncodingParameters[0].ssrc+1})}var P=i(T.localCapabilities,T.remoteCapabilities),O=P.codecs.filter(function(R){return R.name.toLowerCase()==="rtx"}).length;!O&&T.sendEncodingParameters[0].rtx&&delete T.sendEncodingParameters[0].rtx,v+=t(T,P,"answer",T.stream,g._dtlsRole),T.rtcpParameters&&T.rtcpParameters.reducedSize&&(v+=`a=rtcp-rsize\r
67
+ `)}});var S=new c.RTCSessionDescription({type:"answer",sdp:v});return Promise.resolve(S)},f.prototype.addIceCandidate=function(g){var v=this,_;return g&&!(g.sdpMLineIndex!==void 0||g.sdpMid)?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(S,T){if(v._remoteDescription)if(!g||g.candidate==="")for(var M=0;M<v.transceivers.length&&!(!v.transceivers[M].rejected&&(v.transceivers[M].iceTransport.addRemoteCandidate({}),_=r.getMediaSections(v._remoteDescription.sdp),_[M]+=`a=end-of-candidates\r
68
+ `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+_.join(""),v.usingBundle));M++);else{var E=g.sdpMLineIndex;if(g.sdpMid){for(var P=0;P<v.transceivers.length;P++)if(v.transceivers[P].mid===g.sdpMid){E=P;break}}var O=v.transceivers[E];if(O){if(O.rejected)return S();var R=Object.keys(g.candidate).length>0?r.parseCandidate(g.candidate):{};if(R.protocol==="tcp"&&(R.port===0||R.port===9)||R.component&&R.component!==1)return S();if((E===0||E>0&&O.iceTransport!==v.transceivers[0].iceTransport)&&!a(O.iceTransport,R))return T(o("OperationError","Can not add ICE candidate"));var A=g.candidate.trim();A.indexOf("a=")===0&&(A=A.substr(2)),_=r.getMediaSections(v._remoteDescription.sdp),_[E]+="a="+(R.type?A:"end-of-candidates")+`\r
69
+ `,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+_.join("")}else return T(o("OperationError","Can not add ICE candidate"))}else return T(o("InvalidStateError","Can not add ICE candidate without a remote description"));S()})},f.prototype.getStats=function(g){if(g&&g instanceof c.MediaStreamTrack){var v=null;if(this.transceivers.forEach(function(S){S.rtpSender&&S.rtpSender.track===g?v=S.rtpSender:S.rtpReceiver&&S.rtpReceiver.track===g&&(v=S.rtpReceiver)}),!v)throw o("InvalidAccessError","Invalid selector.");return v.getStats()}var _=[];return this.transceivers.forEach(function(S){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(T){S[T]&&_.push(S[T].getStats())})}),Promise.all(_).then(function(S){var T=new Map;return S.forEach(function(M){M.forEach(function(E){T.set(E.id,E)})}),T})};var x=["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"];x.forEach(function(g){var v=c[g];if(v&&v.prototype&&v.prototype.getStats){var _=v.prototype.getStats;v.prototype.getStats=function(){return _.apply(this).then(function(S){var T=new Map;return Object.keys(S).forEach(function(M){S[M].type=e(S[M]),T.set(M,S[M])}),T})}}});var w=["createOffer","createAnswer"];return w.forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var _=arguments;return typeof _[0]=="function"||typeof _[1]=="function"?v.apply(this,[arguments[2]]).then(function(S){typeof _[0]=="function"&&_[0].apply(null,[S])},function(S){typeof _[1]=="function"&&_[1].apply(null,[S])}):v.apply(this,arguments)}}),w=["setLocalDescription","setRemoteDescription","addIceCandidate"],w.forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var _=arguments;return typeof _[1]=="function"||typeof _[2]=="function"?v.apply(this,arguments).then(function(){typeof _[1]=="function"&&_[1].apply(null)},function(S){typeof _[2]=="function"&&_[2].apply(null,[S])}):v.apply(this,arguments)}}),["getStats"].forEach(function(g){var v=f.prototype[g];f.prototype[g]=function(){var _=arguments;return typeof _[1]=="function"?v.apply(this,arguments).then(function(){typeof _[1]=="function"&&_[1].apply(null)}):v.apply(this,arguments)}}),f},Ms}var bu=Su();const xu=lr(bu);function za(r){const e=r&&r.navigator,t=function(i){return{name:{PermissionDeniedError:"NotAllowedError"}[i.name]||i.name,message:i.message,constraint:i.constraint,toString(){return this.name}}},n=e.mediaDevices.getUserMedia.bind(e.mediaDevices);Object.getOwnPropertyDescriptor(e.mediaDevices,"getUserMedia")?.writable&&(e.mediaDevices.getUserMedia=function(i){return n(i).catch(s=>Promise.reject(t(s)))})}function Ba(r){"getDisplayMedia"in r.navigator&&r.navigator.mediaDevices&&(r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||(r.navigator.mediaDevices.getDisplayMedia=r.navigator.getDisplayMedia.bind(r.navigator)))}function Cs(r,e){if(r.RTCIceGatherer&&(r.RTCIceCandidate||(r.RTCIceCandidate=function(n){return n}),r.RTCSessionDescription||(r.RTCSessionDescription=function(n){return n}),e.version<15025)){const n=Object.getOwnPropertyDescriptor(r.MediaStreamTrack.prototype,"enabled");Object.defineProperty(r.MediaStreamTrack.prototype,"enabled",{set(i){n.set.call(this,i);const s=new Event("enabled");s.enabled=i,this.dispatchEvent(s)}})}r.RTCRtpSender&&!("dtmf"in r.RTCRtpSender.prototype)&&Object.defineProperty(r.RTCRtpSender.prototype,"dtmf",{get(){return this._dtmf===void 0&&(this.track.kind==="audio"?this._dtmf=new r.RTCDtmfSender(this):this.track.kind==="video"&&(this._dtmf=null)),this._dtmf}}),r.RTCDtmfSender&&!r.RTCDTMFSender&&(r.RTCDTMFSender=r.RTCDtmfSender);const t=xu(r,e.version);r.RTCPeerConnection=function(n){return n&&n.iceServers&&(n.iceServers=vu(n.iceServers,e.version),ws("ICE servers after filtering:",n.iceServers)),new t(n)},r.RTCPeerConnection.prototype=t.prototype}function Na(r){r.RTCRtpSender&&!("replaceTrack"in r.RTCRtpSender.prototype)&&(r.RTCRtpSender.prototype.replaceTrack=r.RTCRtpSender.prototype.setTrack)}const Ua=Object.freeze(Object.defineProperty({__proto__:null,shimGetDisplayMedia:Ba,shimGetUserMedia:za,shimPeerConnection:Cs,shimReplaceTrack:Na},Symbol.toStringTag,{value:"Module"}));function Da(r,e){const t=r&&r.navigator,n=r&&r.MediaStreamTrack;if(t.getUserMedia=function(i,s,a){ur("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),t.mediaDevices.getUserMedia(i).then(s,a)},!(e.version>55&&"autoGainControl"in t.mediaDevices.getSupportedConstraints())){const i=function(a,o,c){o in a&&!(c in a)&&(a[c]=a[o],delete a[o])},s=t.mediaDevices.getUserMedia.bind(t.mediaDevices);if(Object.getOwnPropertyDescriptor(t.mediaDevices,"getUserMedia")?.writable&&(t.mediaDevices.getUserMedia=function(a){return typeof a=="object"&&typeof a.audio=="object"&&(a=JSON.parse(JSON.stringify(a)),i(a.audio,"autoGainControl","mozAutoGainControl"),i(a.audio,"noiseSuppression","mozNoiseSuppression")),s(a)}),n&&n.prototype.getSettings){const a=n.prototype.getSettings;n.prototype.getSettings=function(){const o=a.apply(this,arguments);return i(o,"mozAutoGainControl","autoGainControl"),i(o,"mozNoiseSuppression","noiseSuppression"),o}}if(n&&n.prototype.applyConstraints){const a=n.prototype.applyConstraints;n.prototype.applyConstraints=function(o){return this.kind==="audio"&&typeof o=="object"&&(o=JSON.parse(JSON.stringify(o)),i(o,"autoGainControl","mozAutoGainControl"),i(o,"noiseSuppression","mozNoiseSuppression")),a.apply(this,[o])}}}}function wu(r,e){r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||r.navigator.mediaDevices&&(r.navigator.mediaDevices.getDisplayMedia=function(t){if(!(t&&t.video)){const n=new DOMException("getDisplayMedia without video constraints is undefined");return n.name="NotFoundError",n.code=8,Promise.reject(n)}return t.video===!0?t.video={mediaSource:e}:t.video.mediaSource=e,r.navigator.mediaDevices.getUserMedia(t)})}function La(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Es(r,e){if(typeof r!="object"||!(r.RTCPeerConnection||r.mozRTCPeerConnection))return;!r.RTCPeerConnection&&r.mozRTCPeerConnection&&(r.RTCPeerConnection=r.mozRTCPeerConnection),e.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach(function(i){const s=r.RTCPeerConnection.prototype[i],a={[i](){return arguments[0]=new(i==="addIceCandidate"?r.RTCIceCandidate:r.RTCSessionDescription)(arguments[0]),s.apply(this,arguments)}};r.RTCPeerConnection.prototype[i]=a[i]});const t={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},n=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[i,s,a]=arguments;return n.apply(this,[i||null]).then(o=>{if(e.version<53&&!s)try{o.forEach(c=>{c.type=t[c.type]||c.type})}catch(c){if(c.name!=="TypeError")throw c;o.forEach((l,u)=>{o.set(u,Object.assign({},l,{type:t[l.type]||l.type}))})}return o}).then(s,a)}}function Fa(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpSender.prototype)return;const e=r.RTCPeerConnection.prototype.getSenders;e&&(r.RTCPeerConnection.prototype.getSenders=function(){const n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n});const t=r.RTCPeerConnection.prototype.addTrack;t&&(r.RTCPeerConnection.prototype.addTrack=function(){const n=t.apply(this,arguments);return n._pc=this,n}),r.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function Va(r){if(!(typeof r=="object"&&r.RTCPeerConnection&&r.RTCRtpSender)||r.RTCRtpSender&&"getStats"in r.RTCRtpReceiver.prototype)return;const e=r.RTCPeerConnection.prototype.getReceivers;e&&(r.RTCPeerConnection.prototype.getReceivers=function(){const t=e.apply(this,[]);return t.forEach(n=>n._pc=this),t}),On(r,"track",t=>(t.receiver._pc=t.srcElement,t)),r.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function ja(r){!r.RTCPeerConnection||"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(e){ur("removeStream","removeTrack"),this.getSenders().forEach(t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)})})}function Ja(r){r.DataChannel&&!r.RTCDataChannel&&(r.RTCDataChannel=r.DataChannel)}function Ga(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.addTransceiver;e&&(r.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const t=arguments[1],n=t&&"sendEncodings"in t;n&&t.sendEncodings.forEach(s=>{if("rid"in s&&!/^[a-z0-9]{0,16}$/i.test(s.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in s&&!(parseFloat(s.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in s&&!(parseFloat(s.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const i=e.apply(this,arguments);if(n){const{sender:s}=i,a=s.getParameters();(!("encodings"in a)||a.encodings.length===1&&Object.keys(a.encodings[0]).length===0)&&(a.encodings=t.sendEncodings,s.sendEncodings=t.sendEncodings,this.setParametersPromises.push(s.setParameters(a).then(()=>{delete s.sendEncodings}).catch(()=>{delete s.sendEncodings})))}return i})}function Wa(r){if(!(typeof r=="object"&&r.RTCRtpSender))return;const e=r.RTCRtpSender.prototype.getParameters;e&&(r.RTCRtpSender.prototype.getParameters=function(){const t=e.apply(this,arguments);return"encodings"in t||(t.encodings=[].concat(this.sendEncodings||[{}])),t})}function Ha(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}function qa(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.createAnswer;r.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then(()=>e.apply(this,arguments)).finally(()=>{this.setParametersPromises=[]}):e.apply(this,arguments)}}const Xa=Object.freeze(Object.defineProperty({__proto__:null,shimAddTransceiver:Ga,shimCreateAnswer:qa,shimCreateOffer:Ha,shimGetDisplayMedia:wu,shimGetParameters:Wa,shimGetUserMedia:Da,shimOnTrack:La,shimPeerConnection:Es,shimRTCDataChannel:Ja,shimReceiverGetStats:Va,shimRemoveStream:ja,shimSenderGetStats:Fa},Symbol.toStringTag,{value:"Module"}));function Ya(r){if(!(typeof r!="object"||!r.RTCPeerConnection)){if("getLocalStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in r.RTCPeerConnection.prototype)){const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addStream=function(t){this._localStreams||(this._localStreams=[]),this._localStreams.includes(t)||this._localStreams.push(t),t.getAudioTracks().forEach(n=>e.call(this,n,t)),t.getVideoTracks().forEach(n=>e.call(this,n,t))},r.RTCPeerConnection.prototype.addTrack=function(t,...n){return n&&n.forEach(i=>{this._localStreams?this._localStreams.includes(i)||this._localStreams.push(i):this._localStreams=[i]}),e.apply(this,arguments)}}"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(t===-1)return;this._localStreams.splice(t,1);const n=e.getTracks();this.getSenders().forEach(i=>{n.includes(i.track)&&this.removeTrack(i)})})}}function Za(r){if(!(typeof r!="object"||!r.RTCPeerConnection)&&("getRemoteStreams"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in r.RTCPeerConnection.prototype))){Object.defineProperty(r.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(t){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=t),this.addEventListener("track",this._onaddstreampoly=n=>{n.streams.forEach(i=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(i))return;this._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,this.dispatchEvent(s)})})}});const e=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){const t=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(n){n.streams.forEach(i=>{if(t._remoteStreams||(t._remoteStreams=[]),t._remoteStreams.indexOf(i)>=0)return;t._remoteStreams.push(i);const s=new Event("addstream");s.stream=i,t.dispatchEvent(s)})}),e.apply(t,arguments)}}}function Ka(r){if(typeof r!="object"||!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype,t=e.createOffer,n=e.createAnswer,i=e.setLocalDescription,s=e.setRemoteDescription,a=e.addIceCandidate;e.createOffer=function(c,l){const u=arguments.length>=2?arguments[2]:arguments[0],p=t.apply(this,[u]);return l?(p.then(c,l),Promise.resolve()):p},e.createAnswer=function(c,l){const u=arguments.length>=2?arguments[2]:arguments[0],p=n.apply(this,[u]);return l?(p.then(c,l),Promise.resolve()):p};let o=function(c,l,u){const p=i.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p};e.setLocalDescription=o,o=function(c,l,u){const p=s.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p},e.setRemoteDescription=o,o=function(c,l,u){const p=a.apply(this,[c]);return u?(p.then(l,u),Promise.resolve()):p},e.addIceCandidate=o}function Qa(r){const e=r&&r.navigator;if(e.mediaDevices&&e.mediaDevices.getUserMedia){const t=e.mediaDevices,n=t.getUserMedia.bind(t);e.mediaDevices.getUserMedia=i=>n($a(i))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=function(t,n,i){e.mediaDevices.getUserMedia(t).then(n,i)}.bind(e))}function $a(r){return r&&r.video!==void 0?Object.assign({},r,{video:ga(r.video)}):r}function ec(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection;r.RTCPeerConnection=function(t,n){if(t&&t.iceServers){const i=[];for(let s=0;s<t.iceServers.length;s++){let a=t.iceServers[s];!a.hasOwnProperty("urls")&&a.hasOwnProperty("url")?(ur("RTCIceServer.url","RTCIceServer.urls"),a=JSON.parse(JSON.stringify(a)),a.urls=a.url,delete a.url,i.push(a)):i.push(t.iceServers[s])}t.iceServers=i}return new e(t,n)},r.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(r.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function tc(r){typeof r=="object"&&r.RTCTrackEvent&&"receiver"in r.RTCTrackEvent.prototype&&!("transceiver"in r.RTCTrackEvent.prototype)&&Object.defineProperty(r.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function nc(r){const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(t){if(t){typeof t.offerToReceiveAudio<"u"&&(t.offerToReceiveAudio=!!t.offerToReceiveAudio);const n=this.getTransceivers().find(s=>s.receiver.track.kind==="audio");t.offerToReceiveAudio===!1&&n?n.direction==="sendrecv"?n.setDirection?n.setDirection("sendonly"):n.direction="sendonly":n.direction==="recvonly"&&(n.setDirection?n.setDirection("inactive"):n.direction="inactive"):t.offerToReceiveAudio===!0&&!n&&this.addTransceiver("audio"),typeof t.offerToReceiveVideo<"u"&&(t.offerToReceiveVideo=!!t.offerToReceiveVideo);const i=this.getTransceivers().find(s=>s.receiver.track.kind==="video");t.offerToReceiveVideo===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):t.offerToReceiveVideo===!0&&!i&&this.addTransceiver("video")}return e.apply(this,arguments)}}function ic(r){typeof r!="object"||r.AudioContext||(r.AudioContext=r.webkitAudioContext)}const rc=Object.freeze(Object.defineProperty({__proto__:null,shimAudioContext:ic,shimCallbacksAPI:Ka,shimConstraints:$a,shimCreateOfferLegacy:nc,shimGetUserMedia:Qa,shimLocalStreamsAPI:Ya,shimRTCIceServerUrls:ec,shimRemoteStreamsAPI:Za,shimTrackEventTransceiver:tc},Symbol.toStringTag,{value:"Module"}));var _u=Oa();const hr=lr(_u);function dr(r){if(!r.RTCIceCandidate||r.RTCIceCandidate&&"foundation"in r.RTCIceCandidate.prototype)return;const e=r.RTCIceCandidate;r.RTCIceCandidate=function(t){if(typeof t=="object"&&t.candidate&&t.candidate.indexOf("a=")===0&&(t=JSON.parse(JSON.stringify(t)),t.candidate=t.candidate.substr(2)),t.candidate&&t.candidate.length){const n=new e(t),i=hr.parseCandidate(t.candidate),s=Object.assign(n,i);return s.toJSON=function(){return{candidate:s.candidate,sdpMid:s.sdpMid,sdpMLineIndex:s.sdpMLineIndex,usernameFragment:s.usernameFragment}},s}return new e(t)},r.RTCIceCandidate.prototype=e.prototype,On(r,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new r.RTCIceCandidate(t.candidate),writable:"false"}),t))}function $n(r,e){if(!r.RTCPeerConnection)return;"sctp"in r.RTCPeerConnection.prototype||Object.defineProperty(r.RTCPeerConnection.prototype,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp}});const t=function(o){if(!o||!o.sdp)return!1;const c=hr.splitSections(o.sdp);return c.shift(),c.some(l=>{const u=hr.parseMLine(l);return u&&u.kind==="application"&&u.protocol.indexOf("SCTP")!==-1})},n=function(o){const c=o.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(c===null||c.length<2)return-1;const l=parseInt(c[1],10);return l!==l?-1:l},i=function(o){let c=65536;return e.browser==="firefox"&&(e.version<57?o===-1?c=16384:c=2147483637:e.version<60?c=e.version===57?65535:65536:c=2147483637),c},s=function(o,c){let l=65536;e.browser==="firefox"&&e.version===57&&(l=65535);const u=hr.matchPrefix(o.sdp,"a=max-message-size:");return u.length>0?l=parseInt(u[0].substr(19),10):e.browser==="firefox"&&c!==-1&&(l=2147483637),l},a=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,e.browser==="chrome"&&e.version>=76){const{sdpSemantics:o}=this.getConfiguration();o==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){const o=n(arguments[0]),c=i(o),l=s(arguments[0],o);let u;c===0&&l===0?u=Number.POSITIVE_INFINITY:c===0||l===0?u=Math.max(c,l):u=Math.min(c,l);const p={};Object.defineProperty(p,"maxMessageSize",{get(){return u}}),this._sctp=p}return a.apply(this,arguments)}}function ei(r){if(!(r.RTCPeerConnection&&"createDataChannel"in r.RTCPeerConnection.prototype))return;function e(n,i){const s=n.send;n.send=function(){const a=arguments[0],o=a.length||a.size||a.byteLength;if(n.readyState==="open"&&i.sctp&&o>i.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+i.sctp.maxMessageSize+" bytes)");return s.apply(n,arguments)}}const t=r.RTCPeerConnection.prototype.createDataChannel;r.RTCPeerConnection.prototype.createDataChannel=function(){const n=t.apply(this,arguments);return e(n,this),n},On(r,"datachannel",n=>(e(n.channel,n.target),n))}function Ps(r){if(!r.RTCPeerConnection||"connectionState"in r.RTCPeerConnection.prototype)return;const e=r.RTCPeerConnection.prototype;Object.defineProperty(e,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(e,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(t){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),t&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=t)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach(t=>{const n=e[t];e[t]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=i=>{const s=i.target;if(s._lastConnectionState!==s.connectionState){s._lastConnectionState=s.connectionState;const a=new Event("connectionstatechange",i);s.dispatchEvent(a)}return i},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),n.apply(this,arguments)}})}function ks(r,e){if(!r.RTCPeerConnection||e.browser==="chrome"&&e.version>=71||e.browser==="safari"&&e.version>=605)return;const t=r.RTCPeerConnection.prototype.setRemoteDescription;r.RTCPeerConnection.prototype.setRemoteDescription=function(n){if(n&&n.sdp&&n.sdp.indexOf(`
70
70
  a=extmap-allow-mixed`)!==-1){const i=n.sdp.split(`
71
71
  `).filter(s=>s.trim()!=="a=extmap-allow-mixed").join(`
72
- `);r.RTCSessionDescription&&n instanceof r.RTCSessionDescription?arguments[0]=new r.RTCSessionDescription({type:n.type,sdp:i}):n.sdp=i}return t.apply(this,arguments)}}function pr(r,e){if(!(r.RTCPeerConnection&&r.RTCPeerConnection.prototype))return;const t=r.RTCPeerConnection.prototype.addIceCandidate;!t||t.length===0||(r.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}const xu=Object.freeze(Object.defineProperty({__proto__:null,removeExtmapAllowMixed:ks,shimAddIceCandidateNullOrEmpty:pr,shimConnectionState:Ps,shimMaxMessageSize:$n,shimRTCIceCandidate:dr,shimSendThrowTypeError:ei},Symbol.toStringTag,{value:"Module"}));function wu({window:r}={},e={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const t=ws,n=pu(r),i={browserDetails:n,commonShim:xu,extractVersion:Qn,disableLog:hu,disableWarnings:du};switch(n.browser){case"chrome":if(!ka||!Ts||!e.shimChrome)return t("Chrome shim is not included in this adapter release."),i;if(n.version===null)return t("Chrome shim can not determine version, not shimming."),i;t("adapter.js shimming chrome."),i.browserShim=ka,pr(r,n),ba(r,n),xa(r),Ts(r,n),wa(r),Ea(r,n),_a(r),Ta(r),Ma(r),Pa(r,n),dr(r),Ps(r),$n(r,n),ei(r),ks(r,n);break;case"firefox":if(!Xa||!Es||!e.shimFirefox)return t("Firefox shim is not included in this adapter release."),i;t("adapter.js shimming firefox."),i.browserShim=Xa,pr(r,n),Da(r,n),Es(r,n),La(r),ja(r),Fa(r),Va(r),Ja(r),Ga(r),Wa(r),Ha(r),qa(r),dr(r),Ps(r),$n(r,n),ei(r);break;case"edge":if(!Ua||!Cs||!e.shimEdge)return t("MS edge shim is not included in this adapter release."),i;t("adapter.js shimming edge."),i.browserShim=Ua,za(r),Ba(r),Cs(r,n),Na(r),$n(r,n),ei(r);break;case"safari":if(!rc||!e.shimSafari)return t("Safari shim is not included in this adapter release."),i;t("adapter.js shimming safari."),i.browserShim=rc,pr(r,n),ec(r),nc(r),Ka(r),Ya(r),Za(r),tc(r),Qa(r),ic(r),dr(r),$n(r,n),ei(r),ks(r,n);break;default:t("Unsupported browser!");break}return i}const sc=wu({window:typeof window>"u"?void 0:window});function Bt(r,e,t,n){Object.defineProperty(r,e,{get:t,set:n,enumerable:!0,configurable:!0})}var Rs=sc.default||sc,ti=new(function(){function r(){this.isIOS=["iPad","iPhone","iPod"].includes(navigator.platform),this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return r.prototype.isWebRTCSupported=function(){return typeof RTCPeerConnection<"u"},r.prototype.isBrowserSupported=function(){var e=this.getBrowser(),t=this.getVersion(),n=this.supportedBrowsers.includes(e);return n?e==="chrome"?t>=this.minChromeVersion:e==="firefox"?t>=this.minFirefoxVersion:e==="safari"?!this.isIOS&&t>=this.minSafariVersion:!1:!1},r.prototype.getBrowser=function(){return Rs.browserDetails.browser},r.prototype.getVersion=function(){return Rs.browserDetails.version||0},r.prototype.isUnifiedPlanSupported=function(){var e=this.getBrowser(),t=Rs.browserDetails.version||0;if(e==="chrome"&&t<this.minChromeVersion)return!1;if(e==="firefox"&&t>=this.minFirefoxVersion)return!0;if(!window.RTCRtpTransceiver||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;var n,i=!1;try{n=new RTCPeerConnection,n.addTransceiver("audio"),i=!0}catch{}finally{n&&n.close()}return i},r.prototype.toString=function(){return`Supports:
72
+ `);r.RTCSessionDescription&&n instanceof r.RTCSessionDescription?arguments[0]=new r.RTCSessionDescription({type:n.type,sdp:i}):n.sdp=i}return t.apply(this,arguments)}}function pr(r,e){if(!(r.RTCPeerConnection&&r.RTCPeerConnection.prototype))return;const t=r.RTCPeerConnection.prototype.addIceCandidate;!t||t.length===0||(r.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?(e.browser==="chrome"&&e.version<78||e.browser==="firefox"&&e.version<68||e.browser==="safari")&&arguments[0]&&arguments[0].candidate===""?Promise.resolve():t.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}const Tu=Object.freeze(Object.defineProperty({__proto__:null,removeExtmapAllowMixed:ks,shimAddIceCandidateNullOrEmpty:pr,shimConnectionState:Ps,shimMaxMessageSize:$n,shimRTCIceCandidate:dr,shimSendThrowTypeError:ei},Symbol.toStringTag,{value:"Module"}));function Mu({window:r}={},e={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const t=ws,n=yu(r),i={browserDetails:n,commonShim:Tu,extractVersion:Qn,disableLog:fu,disableWarnings:mu};switch(n.browser){case"chrome":if(!ka||!Ts||!e.shimChrome)return t("Chrome shim is not included in this adapter release."),i;if(n.version===null)return t("Chrome shim can not determine version, not shimming."),i;t("adapter.js shimming chrome."),i.browserShim=ka,pr(r,n),ba(r,n),xa(r),Ts(r,n),wa(r),Ea(r,n),_a(r),Ta(r),Ma(r),Pa(r,n),dr(r),Ps(r),$n(r,n),ei(r),ks(r,n);break;case"firefox":if(!Xa||!Es||!e.shimFirefox)return t("Firefox shim is not included in this adapter release."),i;t("adapter.js shimming firefox."),i.browserShim=Xa,pr(r,n),Da(r,n),Es(r,n),La(r),ja(r),Fa(r),Va(r),Ja(r),Ga(r),Wa(r),Ha(r),qa(r),dr(r),Ps(r),$n(r,n),ei(r);break;case"edge":if(!Ua||!Cs||!e.shimEdge)return t("MS edge shim is not included in this adapter release."),i;t("adapter.js shimming edge."),i.browserShim=Ua,za(r),Ba(r),Cs(r,n),Na(r),$n(r,n),ei(r);break;case"safari":if(!rc||!e.shimSafari)return t("Safari shim is not included in this adapter release."),i;t("adapter.js shimming safari."),i.browserShim=rc,pr(r,n),ec(r),nc(r),Ka(r),Ya(r),Za(r),tc(r),Qa(r),ic(r),dr(r),$n(r,n),ei(r),ks(r,n);break;default:t("Unsupported browser!");break}return i}const sc=Mu({window:typeof window>"u"?void 0:window});function Bt(r,e,t,n){Object.defineProperty(r,e,{get:t,set:n,enumerable:!0,configurable:!0})}var Rs=sc.default||sc,ti=new(function(){function r(){this.isIOS=["iPad","iPhone","iPod"].includes(navigator.platform),this.supportedBrowsers=["firefox","chrome","safari"],this.minFirefoxVersion=59,this.minChromeVersion=72,this.minSafariVersion=605}return r.prototype.isWebRTCSupported=function(){return typeof RTCPeerConnection<"u"},r.prototype.isBrowserSupported=function(){var e=this.getBrowser(),t=this.getVersion(),n=this.supportedBrowsers.includes(e);return n?e==="chrome"?t>=this.minChromeVersion:e==="firefox"?t>=this.minFirefoxVersion:e==="safari"?!this.isIOS&&t>=this.minSafariVersion:!1:!1},r.prototype.getBrowser=function(){return Rs.browserDetails.browser},r.prototype.getVersion=function(){return Rs.browserDetails.version||0},r.prototype.isUnifiedPlanSupported=function(){var e=this.getBrowser(),t=Rs.browserDetails.version||0;if(e==="chrome"&&t<this.minChromeVersion)return!1;if(e==="firefox"&&t>=this.minFirefoxVersion)return!0;if(!window.RTCRtpTransceiver||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;var n,i=!1;try{n=new RTCPeerConnection,n.addTransceiver("audio"),i=!0}catch{}finally{n&&n.close()}return i},r.prototype.toString=function(){return`Supports:
73
73
  browser:`.concat(this.getBrowser(),`
74
74
  version:`).concat(this.getVersion(),`
75
75
  isIOS:`).concat(this.isIOS,`
76
76
  isWebRTCSupported:`).concat(this.isWebRTCSupported(),`
77
77
  isBrowserSupported:`).concat(this.isBrowserSupported(),`
78
- isUnifiedPlanSupported:`).concat(this.isUnifiedPlanSupported())},r}()),oc={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:["turn:eu-0.turn.peerjs.com:3478","turn:us-0.turn.peerjs.com:3478"],username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"},_u=function(){function r(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=oc,this.browser=ti.getBrowser(),this.browserVersion=ti.getVersion(),this.supports=function(){var e={browser:ti.isBrowserSupported(),webRTC:ti.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!e.webRTC)return e;var t;try{t=new RTCPeerConnection(oc),e.audioVideo=!0;var n=void 0;try{n=t.createDataChannel("_PEERJSTEST",{ordered:!0}),e.data=!0,e.reliable=!!n.ordered;try{n.binaryType="blob",e.binaryBlob=!ti.isIOS}catch{}}catch{}finally{n&&n.close()}}catch{}finally{t&&t.close()}return e}(),this.pack=pa.pack,this.unpack=pa.unpack,this._dataCount=1}return r.prototype.noop=function(){},r.prototype.validateId=function(e){return!e||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(e)},r.prototype.chunk=function(e){for(var t=[],n=e.size,i=Math.ceil(n/te.chunkedMTU),s=0,a=0;a<n;){var o=Math.min(n,a+te.chunkedMTU),c=e.slice(a,o),l={__peerData:this._dataCount,n:s,data:c,total:i};t.push(l),a=o,s++}return this._dataCount++,t},r.prototype.blobToArrayBuffer=function(e,t){var n=new FileReader;return n.onload=function(i){i.target&&t(i.target.result)},n.readAsArrayBuffer(e),n},r.prototype.binaryStringToArrayBuffer=function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t.buffer},r.prototype.randomToken=function(){return Math.random().toString(36).slice(2)},r.prototype.isSecure=function(){return location.protocol==="https:"},r}(),te=new _u,ac={};Bt(ac,"Peer",()=>Ns,r=>Ns=r);var ni={},Tu=Object.prototype.hasOwnProperty,Ye="~";function ii(){}Object.create&&(ii.prototype=Object.create(null),new ii().__proto__||(Ye=!1));function Mu(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function cc(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new Mu(t,n||r,i),a=Ye?Ye+e:e;return r._events[a]?r._events[a].fn?r._events[a]=[r._events[a],s]:r._events[a].push(s):(r._events[a]=s,r._eventsCount++),r}function fr(r,e){--r._eventsCount===0?r._events=new ii:delete r._events[e]}function Ve(){this._events=new ii,this._eventsCount=0}Ve.prototype.eventNames=function(){var r=[],e,t;if(this._eventsCount===0)return r;for(t in e=this._events)Tu.call(e,t)&&r.push(Ye?t.slice(1):t);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},Ve.prototype.listeners=function(r){var e=Ye?Ye+r:r,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,i=t.length,s=new Array(i);n<i;n++)s[n]=t[n].fn;return s},Ve.prototype.listenerCount=function(r){var e=Ye?Ye+r:r,t=this._events[e];return t?t.fn?1:t.length:0},Ve.prototype.emit=function(r,e,t,n,i,s){var a=Ye?Ye+r:r;if(!this._events[a])return!1;var o=this._events[a],c=arguments.length,l,u;if(o.fn){switch(o.once&&this.removeListener(r,o.fn,void 0,!0),c){case 1:return o.fn.call(o.context),!0;case 2:return o.fn.call(o.context,e),!0;case 3:return o.fn.call(o.context,e,t),!0;case 4:return o.fn.call(o.context,e,t,n),!0;case 5:return o.fn.call(o.context,e,t,n,i),!0;case 6:return o.fn.call(o.context,e,t,n,i,s),!0}for(u=1,l=new Array(c-1);u<c;u++)l[u-1]=arguments[u];o.fn.apply(o.context,l)}else{var p=o.length,m;for(u=0;u<p;u++)switch(o[u].once&&this.removeListener(r,o[u].fn,void 0,!0),c){case 1:o[u].fn.call(o[u].context);break;case 2:o[u].fn.call(o[u].context,e);break;case 3:o[u].fn.call(o[u].context,e,t);break;case 4:o[u].fn.call(o[u].context,e,t,n);break;default:if(!l)for(m=1,l=new Array(c-1);m<c;m++)l[m-1]=arguments[m];o[u].fn.apply(o[u].context,l)}}return!0},Ve.prototype.on=function(r,e,t){return cc(this,r,e,t,!1)},Ve.prototype.once=function(r,e,t){return cc(this,r,e,t,!0)},Ve.prototype.removeListener=function(r,e,t,n){var i=Ye?Ye+r:r;if(!this._events[i])return this;if(!e)return fr(this,i),this;var s=this._events[i];if(s.fn)s.fn===e&&(!n||s.once)&&(!t||s.context===t)&&fr(this,i);else{for(var a=0,o=[],c=s.length;a<c;a++)(s[a].fn!==e||n&&!s[a].once||t&&s[a].context!==t)&&o.push(s[a]);o.length?this._events[i]=o.length===1?o[0]:o:fr(this,i)}return this},Ve.prototype.removeAllListeners=function(r){var e;return r?(e=Ye?Ye+r:r,this._events[e]&&fr(this,e)):(this._events=new ii,this._eventsCount=0),this},Ve.prototype.off=Ve.prototype.removeListener,Ve.prototype.addListener=Ve.prototype.on,Ve.prefixed=Ye,Ve.EventEmitter=Ve,ni=Ve;var J={};Bt(J,"LogLevel",()=>et,r=>et=r),Bt(J,"default",()=>lc,r=>lc=r);var mn=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},yn=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},Cu="PeerJS: ",et;(function(r){r[r.Disabled=0]="Disabled",r[r.Errors=1]="Errors",r[r.Warnings=2]="Warnings",r[r.All=3]="All"})(et||(et={}));var Eu=function(){function r(){this._logLevel=et.Disabled}return Object.defineProperty(r.prototype,"logLevel",{get:function(){return this._logLevel},set:function(e){this._logLevel=e},enumerable:!1,configurable:!0}),r.prototype.log=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=et.All&&this._print.apply(this,yn([et.All],mn(e),!1))},r.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=et.Warnings&&this._print.apply(this,yn([et.Warnings],mn(e),!1))},r.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=et.Errors&&this._print.apply(this,yn([et.Errors],mn(e),!1))},r.prototype.setLogFunction=function(e){this._print=e},r.prototype._print=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var i=yn([Cu],mn(t),!1);for(var s in i)i[s]instanceof Error&&(i[s]="("+i[s].name+") "+i[s].message);e>=et.All?console.log.apply(console,yn([],mn(i),!1)):e>=et.Warnings?console.warn.apply(console,yn(["WARNING"],mn(i),!1)):e>=et.Errors&&console.error.apply(console,yn(["ERROR"],mn(i),!1))},r}(),lc=new Eu,uc={};Bt(uc,"Socket",()=>hc,r=>hc=r);var Pt;(function(r){r.Data="data",r.Media="media"})(Pt||(Pt={}));var we;(function(r){r.BrowserIncompatible="browser-incompatible",r.Disconnected="disconnected",r.InvalidID="invalid-id",r.InvalidKey="invalid-key",r.Network="network",r.PeerUnavailable="peer-unavailable",r.SslUnavailable="ssl-unavailable",r.ServerError="server-error",r.SocketError="socket-error",r.SocketClosed="socket-closed",r.UnavailableID="unavailable-id",r.WebRTC="webrtc"})(we||(we={}));var qt;(function(r){r.Binary="binary",r.BinaryUTF8="binary-utf8",r.JSON="json"})(qt||(qt={}));var Xt;(function(r){r.Message="message",r.Disconnected="disconnected",r.Error="error",r.Close="close"})(Xt||(Xt={}));var Be;(function(r){r.Heartbeat="HEARTBEAT",r.Candidate="CANDIDATE",r.Offer="OFFER",r.Answer="ANSWER",r.Open="OPEN",r.Error="ERROR",r.IdTaken="ID-TAKEN",r.InvalidKey="INVALID-KEY",r.Leave="LEAVE",r.Expire="EXPIRE"})(Be||(Be={}));var As={};As=JSON.parse('{"name":"peerjs","version":"1.4.7","keywords":["peerjs","webrtc","p2p","rtc"],"description":"PeerJS client","homepage":"https://peerjs.com","bugs":{"url":"https://github.com/peers/peerjs/issues"},"repository":{"type":"git","url":"https://github.com/peers/peerjs"},"license":"MIT","contributors":["Michelle Bu <michelle@michellebu.com>","afrokick <devbyru@gmail.com>","ericz <really.ez@gmail.com>","Jairo <kidandcat@gmail.com>","Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>","Jairo Caro-Accino Viciana <jairo@galax.be>","Carlos Caballero <carlos.caballero.gonzalez@gmail.com>","hc <hheennrryy@gmail.com>","Muhammad Asif <capripio@gmail.com>","PrashoonB <prashoonbhattacharjee@gmail.com>","Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>","akotynski <aleksanderkotbury@gmail.com>","lmb <i@lmb.io>","Jairooo <jairocaro@msn.com>","Moritz St\xFCckler <moritz.stueckler@gmail.com>","Simon <crydotsnakegithub@gmail.com>","Denis Lukov <denismassters@gmail.com>","Philipp Hancke <fippo@andyet.net>","Hans Oksendahl <hansoksendahl@gmail.com>","Jess <jessachandler@gmail.com>","khankuan <khankuan@gmail.com>","DUODVK <kurmanov.work@gmail.com>","XiZhao <kwang1imsa@gmail.com>","Matthias Lohr <matthias@lohr.me>","=frank tree <=frnktrb@googlemail.com>","Andre Eckardt <aeckardt@outlook.com>","Chris Cowan <agentme49@gmail.com>","Alex Chuev <alex@chuev.com>","alxnull <alxnull@e.mail.de>","Yemel Jardi <angel.jardi@gmail.com>","Ben Parnell <benjaminparnell.94@gmail.com>","Benny Lichtner <bennlich@gmail.com>","fresheneesz <bitetrudpublic@gmail.com>","bob.barstead@exaptive.com <bob.barstead@exaptive.com>","chandika <chandika@gmail.com>","emersion <contact@emersion.fr>","Christopher Van <cvan@users.noreply.github.com>","eddieherm <edhermoso@gmail.com>","Eduardo Pinho <enet4mikeenet@gmail.com>","Evandro Zanatta <ezanatta@tray.net.br>","Gardner Bickford <gardner@users.noreply.github.com>","Gian Luca <gianluca.cecchi@cynny.com>","PatrickJS <github@gdi2290.com>","jonnyf <github@jonathanfoss.co.uk>","Hizkia Felix <hizkifw@gmail.com>","Hristo Oskov <hristo.oskov@gmail.com>","Isaac Madwed <i.madwed@gmail.com>","Ilya Konanykhin <ilya.konanykhin@gmail.com>","jasonbarry <jasbarry@me.com>","Jonathan Burke <jonathan.burke.1311@googlemail.com>","Josh Hamit <josh.hamit@gmail.com>","Jordan Austin <jrax86@gmail.com>","Joel Wetzell <jwetzell@yahoo.com>","xizhao <kevin.wang@cloudera.com>","Alberto Torres <kungfoobar@gmail.com>","Jonathan Mayol <mayoljonathan@gmail.com>","Jefferson Felix <me@jsfelix.dev>","Rolf Erik Lekang <me@rolflekang.com>","Kevin Mai-Husan Chia <mhchia@users.noreply.github.com>","Pepijn de Vos <pepijndevos@gmail.com>","JooYoung <qkdlql@naver.com>","Tobias Speicher <rootcommander@gmail.com>","Steve Blaurock <sblaurock@gmail.com>","Kyrylo Shegeda <shegeda@ualberta.ca>","Diwank Singh Tomer <singh@diwank.name>","So\u0308ren Balko <Soeren.Balko@gmail.com>","Arpit Solanki <solankiarpit1997@gmail.com>","Yuki Ito <yuki@gnnk.net>","Artur Zayats <zag2art@gmail.com>"],"funding":{"type":"opencollective","url":"https://opencollective.com/peer"},"collective":{"type":"opencollective","url":"https://opencollective.com/peer"},"files":["dist/*"],"sideEffects":["lib/global.ts","lib/supports.ts"],"main":"dist/bundler.cjs","module":"dist/bundler.mjs","browser-minified":"dist/peerjs.min.js","browser-unminified":"dist/peerjs.js","types":"dist/types.d.ts","engines":{"node":">= 10"},"targets":{"types":{"source":"lib/exports.ts"},"main":{"source":"lib/exports.ts","sourceMap":{"inlineSources":true}},"module":{"source":"lib/exports.ts","includeNodeModules":["eventemitter3"],"sourceMap":{"inlineSources":true}},"browser-minified":{"context":"browser","outputFormat":"global","optimize":true,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"},"browser-unminified":{"context":"browser","outputFormat":"global","optimize":false,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"}},"scripts":{"contributors":"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\"chore(contributors): update and sort contributors list\\"","check":"tsc --noEmit","watch":"parcel watch","build":"rm -rf dist && parcel build","prepublishOnly":"npm run build","test":"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts","format":"prettier --write .","semantic-release":"semantic-release"},"devDependencies":{"@parcel/config-default":"^2.5.0","@parcel/packager-ts":"^2.5.0","@parcel/transformer-typescript-tsc":"^2.5.0","@parcel/transformer-typescript-types":"^2.5.0","@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/chai":"^4.3.0","@types/mocha":"^9.1.0","@types/node":"^17.0.18","chai":"^4.3.6","git-authors-cli":"^1.0.40","jsdom":"^19.0.0","jsdom-global":"^3.0.2","mocha":"^9.2.0","mock-socket":"8.0.5","parcel":"^2.5.0","parcel-transformer-tsc-sourcemaps":"^1.0.2","prettier":"^2.6.2","semantic-release":"^19.0.2","standard":"^16.0.4","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"@swc/helpers":"^0.3.13","eventemitter3":"^4.0.7","peerjs-js-binarypack":"1.0.1","webrtc-adapter":"^7.7.1"}}');var Pu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),ku=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},Ru=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},Au=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},hc=function(r){Pu(e,r);function e(t,n,i,s,a,o){o===void 0&&(o=5e3);var c=r.call(this)||this;c.pingInterval=o,c._disconnected=!0,c._messagesQueue=[];var l=t?"wss://":"ws://";return c._baseUrl=l+n+":"+i+s+"peerjs?key="+a,c}return e.prototype.start=function(t,n){var i=this;this._id=t;var s="".concat(this._baseUrl,"&id=").concat(t,"&token=").concat(n);this._socket||!this._disconnected||(this._socket=new WebSocket(s+"&version="+As.version),this._disconnected=!1,this._socket.onmessage=function(a){var o;try{o=JSON.parse(a.data),J.default.log("Server message received:",o)}catch{J.default.log("Invalid server message",a.data);return}i.emit(Xt.Message,o)},this._socket.onclose=function(a){i._disconnected||(J.default.log("Socket closed.",a),i._cleanup(),i._disconnected=!0,i.emit(Xt.Disconnected))},this._socket.onopen=function(){i._disconnected||(i._sendQueuedMessages(),J.default.log("Socket open"),i._scheduleHeartbeat())})},e.prototype._scheduleHeartbeat=function(){var t=this;this._wsPingTimer=setTimeout(function(){t._sendHeartbeat()},this.pingInterval)},e.prototype._sendHeartbeat=function(){if(!this._wsOpen()){J.default.log("Cannot send heartbeat, because socket closed");return}var t=JSON.stringify({type:Be.Heartbeat});this._socket.send(t),this._scheduleHeartbeat()},e.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},e.prototype._sendQueuedMessages=function(){var t,n,i=Ru([],ku(this._messagesQueue),!1);this._messagesQueue=[];try{for(var s=Au(i),a=s.next();!a.done;a=s.next()){var o=a.value;this.send(o)}}catch(c){t={error:c}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.send=function(t){if(!this._disconnected){if(!this._id){this._messagesQueue.push(t);return}if(!t.type){this.emit(Xt.Error,"Invalid message");return}if(this._wsOpen()){var n=JSON.stringify(t);this._socket.send(n)}}},e.prototype.close=function(){this._disconnected||(this._cleanup(),this._disconnected=!0)},e.prototype._cleanup=function(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)},e}(ni.EventEmitter),Os={};Bt(Os,"MediaConnection",()=>fc,r=>fc=r);var Is={};Bt(Is,"Negotiator",()=>dc,r=>dc=r);var mr=function(){return mr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},mr.apply(this,arguments)},yr=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(u){try{l(n.next(u))}catch(p){a(p)}}function c(u){try{l(n.throw(u))}catch(p){a(p)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},gr=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(u){return c([l,u])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(u){l=[6,u],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},dc=function(){function r(e){this.connection=e}return r.prototype.startConnection=function(e){var t=this._startPeerConnection();if(this.connection.peerConnection=t,this.connection.type===Pt.Media&&e._stream&&this._addTracksToConnection(e._stream,t),e.originator){if(this.connection.type===Pt.Data){var n=this.connection,i={ordered:!!e.reliable},s=t.createDataChannel(n.label,i);n.initialize(s)}this._makeOffer()}else this.handleSDP("OFFER",e.sdp)},r.prototype._startPeerConnection=function(){J.default.log("Creating RTCPeerConnection.");var e=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(e),e},r.prototype._setupListeners=function(e){var t=this,n=this.connection.peer,i=this.connection.connectionId,s=this.connection.type,a=this.connection.provider;J.default.log("Listening for ICE candidates."),e.onicecandidate=function(o){!o.candidate||!o.candidate.candidate||(J.default.log("Received ICE candidates for ".concat(n,":"),o.candidate),a.socket.send({type:Be.Candidate,payload:{candidate:o.candidate,type:s,connectionId:i},dst:n}))},e.oniceconnectionstatechange=function(){switch(e.iceConnectionState){case"failed":J.default.log("iceConnectionState is failed, closing connections to "+n),t.connection.emit("error",new Error("Negotiation of connection to "+n+" failed.")),t.connection.close();break;case"closed":J.default.log("iceConnectionState is closed, closing connections to "+n),t.connection.emit("error",new Error("Connection to "+n+" closed.")),t.connection.close();break;case"disconnected":J.default.log("iceConnectionState changed to disconnected on the connection with "+n);break;case"completed":e.onicecandidate=te.noop;break}t.connection.emit("iceStateChanged",e.iceConnectionState)},J.default.log("Listening for data channel"),e.ondatachannel=function(o){J.default.log("Received data channel");var c=o.channel,l=a.getConnection(n,i);l.initialize(c)},J.default.log("Listening for remote stream"),e.ontrack=function(o){J.default.log("Received remote stream");var c=o.streams[0],l=a.getConnection(n,i);if(l.type===Pt.Media){var u=l;t._addStreamToMediaConnection(c,u)}}},r.prototype.cleanup=function(){J.default.log("Cleaning up PeerConnection to "+this.connection.peer);var e=this.connection.peerConnection;if(e){this.connection.peerConnection=null,e.onicecandidate=e.oniceconnectionstatechange=e.ondatachannel=e.ontrack=function(){};var t=e.signalingState!=="closed",n=!1;if(this.connection.type===Pt.Data){var i=this.connection,s=i.dataChannel;s&&(n=!!s.readyState&&s.readyState!=="closed")}(t||n)&&e.close()}},r.prototype._makeOffer=function(){return yr(this,void 0,Promise,function(){var e,t,n,i,s,a,o;return gr(this,function(c){switch(c.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,c.label=1;case 1:return c.trys.push([1,7,,8]),[4,e.createOffer(this.connection.options.constraints)];case 2:n=c.sent(),J.default.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),c.label=3;case 3:return c.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return c.sent(),J.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),i={sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata,browser:te.browser},this.connection.type===Pt.Data&&(s=this.connection,i=mr(mr({},i),{label:s.label,reliable:s.reliable,serialization:s.serialization})),t.socket.send({type:Be.Offer,payload:i,dst:this.connection.peer}),[3,6];case 5:return a=c.sent(),a!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(t.emitError(we.WebRTC,a),J.default.log("Failed to setLocalDescription, ",a)),[3,6];case 6:return[3,8];case 7:return o=c.sent(),t.emitError(we.WebRTC,o),J.default.log("Failed to createOffer, ",o),[3,8];case 8:return[2]}})})},r.prototype._makeAnswer=function(){return yr(this,void 0,Promise,function(){var e,t,n,i,s;return gr(this,function(a){switch(a.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,a.label=1;case 1:return a.trys.push([1,7,,8]),[4,e.createAnswer()];case 2:n=a.sent(),J.default.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),a.label=3;case 3:return a.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return a.sent(),J.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),t.socket.send({type:Be.Answer,payload:{sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,browser:te.browser},dst:this.connection.peer}),[3,6];case 5:return i=a.sent(),t.emitError(we.WebRTC,i),J.default.log("Failed to setLocalDescription, ",i),[3,6];case 6:return[3,8];case 7:return s=a.sent(),t.emitError(we.WebRTC,s),J.default.log("Failed to create answer, ",s),[3,8];case 8:return[2]}})})},r.prototype.handleSDP=function(e,t){return yr(this,void 0,Promise,function(){var n,i,s,a;return gr(this,function(o){switch(o.label){case 0:t=new RTCSessionDescription(t),n=this.connection.peerConnection,i=this.connection.provider,J.default.log("Setting remote description",t),s=this,o.label=1;case 1:return o.trys.push([1,5,,6]),[4,n.setRemoteDescription(t)];case 2:return o.sent(),J.default.log("Set remoteDescription:".concat(e," for:").concat(this.connection.peer)),e!=="OFFER"?[3,4]:[4,s._makeAnswer()];case 3:o.sent(),o.label=4;case 4:return[3,6];case 5:return a=o.sent(),i.emitError(we.WebRTC,a),J.default.log("Failed to setRemoteDescription, ",a),[3,6];case 6:return[2]}})})},r.prototype.handleCandidate=function(e){return yr(this,void 0,Promise,function(){var t,n,i,s,a,o;return gr(this,function(c){switch(c.label){case 0:J.default.log("handleCandidate:",e),t=e.candidate,n=e.sdpMLineIndex,i=e.sdpMid,s=this.connection.peerConnection,a=this.connection.provider,c.label=1;case 1:return c.trys.push([1,3,,4]),[4,s.addIceCandidate(new RTCIceCandidate({sdpMid:i,sdpMLineIndex:n,candidate:t}))];case 2:return c.sent(),J.default.log("Added ICE candidate for:".concat(this.connection.peer)),[3,4];case 3:return o=c.sent(),a.emitError(we.WebRTC,o),J.default.log("Failed to handleCandidate, ",o),[3,4];case 4:return[2]}})})},r.prototype._addTracksToConnection=function(e,t){if(J.default.log("add tracks from stream ".concat(e.id," to peer connection")),!t.addTrack)return J.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");e.getTracks().forEach(function(n){t.addTrack(n,e)})},r.prototype._addStreamToMediaConnection=function(e,t){J.default.log("add stream ".concat(e.id," to media connection ").concat(t.connectionId)),t.addStream(e)},r}(),zs={};Bt(zs,"BaseConnection",()=>pc,r=>pc=r);var Ou=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),pc=function(r){Ou(e,r);function e(t,n,i){var s=r.call(this)||this;return s.peer=t,s.provider=n,s.options=i,s._open=!1,s.metadata=i.metadata,s}return Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),e}(ni.EventEmitter),Iu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),vr=function(){return vr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},vr.apply(this,arguments)},zu=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},fc=function(r){Iu(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s._localStream=s.options._stream,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s._negotiator=new Is.Negotiator(s),s._localStream&&s._negotiator.startConnection({_stream:s._localStream,originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Pt.Media},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"localStream",{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remoteStream",{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),e.prototype.addStream=function(t){J.default.log("Receiving stream",t),this._remoteStream=t,r.prototype.emit.call(this,"stream",t)},e.prototype.handleMessage=function(t){var n=t.type,i=t.payload;switch(t.type){case Be.Answer:this._negotiator.handleSDP(n,i.sdp),this._open=!0;break;case Be.Candidate:this._negotiator.handleCandidate(i.candidate);break;default:J.default.warn("Unrecognized message type:".concat(n," from peer:").concat(this.peer));break}},e.prototype.answer=function(t,n){var i,s;if(n===void 0&&(n={}),this._localStream){J.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");return}this._localStream=t,n&&n.sdpTransform&&(this.options.sdpTransform=n.sdpTransform),this._negotiator.startConnection(vr(vr({},this.options._payload),{_stream:t}));var a=this.provider._getMessages(this.connectionId);try{for(var o=zu(a),c=o.next();!c.done;c=o.next()){var l=c.value;this.handleMessage(l)}}catch(u){i={error:u}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}this._open=!0},e.prototype.close=function(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.ID_PREFIX="mc_",e}(zs.BaseConnection),Bs={};Bt(Bs,"DataConnection",()=>gc,r=>gc=r);var mc={};Bt(mc,"EncodingQueue",()=>yc,r=>yc=r);var Bu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),yc=function(r){Bu(e,r);function e(){var t=r.call(this)||this;return t.fileReader=new FileReader,t._queue=[],t._processing=!1,t.fileReader.onload=function(n){t._processing=!1,n.target&&t.emit("done",n.target.result),t.doNextTask()},t.fileReader.onerror=function(n){J.default.error("EncodingQueue error:",n),t._processing=!1,t.destroy(),t.emit("error",n)},t}return Object.defineProperty(e.prototype,"queue",{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"processing",{get:function(){return this._processing},enumerable:!1,configurable:!0}),e.prototype.enque=function(t){this.queue.push(t),!this.processing&&this.doNextTask()},e.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},e.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},e}(ni.EventEmitter),Nu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),Uu=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},gc=function(r){Nu(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s.stringify=JSON.stringify,s.parse=JSON.parse,s._buffer=[],s._bufferSize=0,s._buffering=!1,s._chunkedData={},s._encodingQueue=new mc.EncodingQueue,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s.label=s.options.label||s.connectionId,s.serialization=s.options.serialization||qt.Binary,s.reliable=!!s.options.reliable,s._encodingQueue.on("done",function(a){s._bufferedSend(a)}),s._encodingQueue.on("error",function(){J.default.error("DC#".concat(s.connectionId,": Error occured in encoding from blob to arraybuffer, close DC")),s.close()}),s._negotiator=new Is.Negotiator(s),s._negotiator.startConnection(s.options._payload||{originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Pt.Data},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dataChannel",{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bufferSize",{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),e.prototype.initialize=function(t){this._dc=t,this._configureDataChannel()},e.prototype._configureDataChannel=function(){var t=this;(!te.supports.binaryBlob||te.supports.reliable)&&(this.dataChannel.binaryType="arraybuffer"),this.dataChannel.onopen=function(){J.default.log("DC#".concat(t.connectionId," dc connection success")),t._open=!0,t.emit("open")},this.dataChannel.onmessage=function(n){J.default.log("DC#".concat(t.connectionId," dc onmessage:"),n.data),t._handleDataMessage(n)},this.dataChannel.onclose=function(){J.default.log("DC#".concat(t.connectionId," dc closed for:"),t.peer),t.close()}},e.prototype._handleDataMessage=function(t){var n=this,i=t.data,s=i.constructor,a=this.serialization===qt.Binary||this.serialization===qt.BinaryUTF8,o=i;if(a){if(s===Blob){te.blobToArrayBuffer(i,function(l){var u=te.unpack(l);n.emit("data",u)});return}else if(s===ArrayBuffer)o=te.unpack(i);else if(s===String){var c=te.binaryStringToArrayBuffer(i);o=te.unpack(c)}}else this.serialization===qt.JSON&&(o=this.parse(i));if(o.__peerData){this._handleChunk(o);return}r.prototype.emit.call(this,"data",o)},e.prototype._handleChunk=function(t){var n=t.__peerData,i=this._chunkedData[n]||{data:[],count:0,total:t.total};if(i.data[t.n]=t.data,i.count++,this._chunkedData[n]=i,i.total===i.count){delete this._chunkedData[n];var s=new Blob(i.data);this._handleDataMessage({data:s})}},e.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),this._encodingQueue=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.prototype.send=function(t,n){if(!this.open){r.prototype.emit.call(this,"error",new Error("Connection is not open. You should listen for the `open` event before sending messages."));return}if(this.serialization===qt.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===qt.Binary||this.serialization===qt.BinaryUTF8){var i=te.pack(t);if(!n&&i.size>te.chunkedMTU){this._sendChunks(i);return}te.supports.binaryBlob?this._bufferedSend(i):this._encodingQueue.enque(i)}else this._bufferedSend(t)},e.prototype._bufferedSend=function(t){(this._buffering||!this._trySend(t))&&(this._buffer.push(t),this._bufferSize=this._buffer.length)},e.prototype._trySend=function(t){var n=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>e.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){n._buffering=!1,n._tryBuffer()},50),!1;try{this.dataChannel.send(t)}catch(i){return J.default.error("DC#:".concat(this.connectionId," Error when sending:"),i),this._buffering=!0,this.close(),!1}return!0},e.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var t=this._buffer[0];this._trySend(t)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},e.prototype._sendChunks=function(t){var n,i,s=te.chunk(t);J.default.log("DC#".concat(this.connectionId," Try to send ").concat(s.length," chunks..."));try{for(var a=Uu(s),o=a.next();!o.done;o=a.next()){var c=o.value;this.send(c,!0)}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.handleMessage=function(t){var n=t.payload;switch(t.type){case Be.Answer:this._negotiator.handleSDP(t.type,n.sdp);break;case Be.Candidate:this._negotiator.handleCandidate(n.candidate);break;default:J.default.warn("Unrecognized message type:",t.type,"from peer:",this.peer);break}},e.ID_PREFIX="dc_",e.MAX_BUFFERED_AMOUNT=8388608,e}(zs.BaseConnection),vc={};Bt(vc,"API",()=>xc,r=>xc=r);var Sc=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(u){try{l(n.next(u))}catch(p){a(p)}}function c(u){try{l(n.throw(u))}catch(p){a(p)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},bc=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(u){return c([l,u])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(u){l=[6,u],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},xc=function(){function r(e){this._options=e}return r.prototype._buildRequest=function(e){var t=this._options.secure?"https":"http",n=this._options,i=n.host,s=n.port,a=n.path,o=n.key,c=new URL("".concat(t,"://").concat(i,":").concat(s).concat(a).concat(o,"/").concat(e));return c.searchParams.set("ts","".concat(Date.now()).concat(Math.random())),c.searchParams.set("version",As.version),fetch(c.href,{referrerPolicy:this._options.referrerPolicy})},r.prototype.retrieveId=function(){return Sc(this,void 0,Promise,function(){var e,t,n;return bc(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("id")];case 1:if(e=i.sent(),e.status!==200)throw new Error("Error. Status:".concat(e.status));return[2,e.text()];case 2:throw t=i.sent(),J.default.error("Error retrieving ID",t),n="",this._options.path==="/"&&this._options.host!==te.CLOUD_HOST&&(n=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+n);case 3:return[2]}})})},r.prototype.listAllPeers=function(){return Sc(this,void 0,Promise,function(){var e,t,n;return bc(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("peers")];case 1:if(e=i.sent(),e.status!==200)throw e.status===401?(t="",this._options.host===te.CLOUD_HOST?t="It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":t="You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+t)):new Error("Error. Status:".concat(e.status));return[2,e.json()];case 2:throw n=i.sent(),J.default.error("Error retrieving list peers",n),new Error("Could not get list peers from the server."+n);case 3:return[2]}})})},r}(),Du=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),ri=function(){return ri=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},ri.apply(this,arguments)},si=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},Lu=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},Ns=function(r){Du(e,r);function e(t,n){var i=r.call(this)||this;i._id=null,i._lastServerId=null,i._destroyed=!1,i._disconnected=!1,i._open=!1,i._connections=new Map,i._lostMessages=new Map;var s;return t&&t.constructor==Object?n=t:t&&(s=t.toString()),n=ri({debug:0,host:te.CLOUD_HOST,port:te.CLOUD_PORT,path:"/",key:e.DEFAULT_KEY,token:te.randomToken(),config:te.defaultConfig,referrerPolicy:"strict-origin-when-cross-origin"},n),i._options=n,i._options.host==="/"&&(i._options.host=window.location.hostname),i._options.path&&(i._options.path[0]!=="/"&&(i._options.path="/"+i._options.path),i._options.path[i._options.path.length-1]!=="/"&&(i._options.path+="/")),i._options.secure===void 0&&i._options.host!==te.CLOUD_HOST?i._options.secure=te.isSecure():i._options.host==te.CLOUD_HOST&&(i._options.secure=!0),i._options.logFunction&&J.default.setLogFunction(i._options.logFunction),J.default.logLevel=i._options.debug||0,i._api=new vc.API(n),i._socket=i._createServerConnection(),!te.supports.audioVideo&&!te.supports.data?(i._delayedAbort(we.BrowserIncompatible,"The current browser does not support WebRTC"),i):s&&!te.validateId(s)?(i._delayedAbort(we.InvalidID,'ID "'.concat(s,'" is invalid')),i):(s?i._initialize(s):i._api.retrieveId().then(function(a){return i._initialize(a)}).catch(function(a){return i._abort(we.ServerError,a)}),i)}return Object.defineProperty(e.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"socket",{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"connections",{get:function(){var t,n,i=Object.create(null);try{for(var s=si(this._connections),a=s.next();!a.done;a=s.next()){var o=Lu(a.value,2),c=o[0],l=o[1];i[c]=l}}catch(u){t={error:u}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}return i},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disconnected",{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),e.prototype._createServerConnection=function(){var t=this,n=new uc.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return n.on(Xt.Message,function(i){t._handleMessage(i)}),n.on(Xt.Error,function(i){t._abort(we.SocketError,i)}),n.on(Xt.Disconnected,function(){t.disconnected||(t.emitError(we.Network,"Lost connection to server."),t.disconnect())}),n.on(Xt.Close,function(){t.disconnected||t._abort(we.SocketClosed,"Underlying socket is already closed.")}),n},e.prototype._initialize=function(t){this._id=t,this.socket.start(t,this._options.token)},e.prototype._handleMessage=function(t){var n,i,s=t.type,a=t.payload,o=t.src;switch(s){case Be.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Be.Error:this._abort(we.ServerError,a.msg);break;case Be.IdTaken:this._abort(we.UnavailableID,'ID "'.concat(this.id,'" is taken'));break;case Be.InvalidKey:this._abort(we.InvalidKey,'API KEY "'.concat(this._options.key,'" is invalid'));break;case Be.Leave:J.default.log("Received leave message from ".concat(o)),this._cleanupPeer(o),this._connections.delete(o);break;case Be.Expire:this.emitError(we.PeerUnavailable,"Could not connect to peer ".concat(o));break;case Be.Offer:var x=a.connectionId,w=this.getConnection(o,x);if(w&&(w.close(),J.default.warn("Offer received for existing Connection ID:".concat(x))),a.type===Pt.Media){var c=new Os.MediaConnection(o,this,{connectionId:x,_payload:a,metadata:a.metadata});w=c,this._addConnection(o,w),this.emit("call",c)}else if(a.type===Pt.Data){var l=new Bs.DataConnection(o,this,{connectionId:x,_payload:a,metadata:a.metadata,label:a.label,serialization:a.serialization,reliable:a.reliable});w=l,this._addConnection(o,w),this.emit("connection",l)}else{J.default.warn("Received malformed connection type:".concat(a.type));return}var u=this._getMessages(x);try{for(var p=si(u),m=p.next();!m.done;m=p.next()){var f=m.value;w.handleMessage(f)}}catch(g){n={error:g}}finally{try{m&&!m.done&&(i=p.return)&&i.call(p)}finally{if(n)throw n.error}}break;default:if(!a){J.default.warn("You received a malformed message from ".concat(o," of type ").concat(s));return}var x=a.connectionId,w=this.getConnection(o,x);w&&w.peerConnection?w.handleMessage(t):x?this._storeMessage(x,t):J.default.warn("You received an unrecognized message:",t);break}},e.prototype._storeMessage=function(t,n){this._lostMessages.has(t)||this._lostMessages.set(t,[]),this._lostMessages.get(t).push(n)},e.prototype._getMessages=function(t){var n=this._lostMessages.get(t);return n?(this._lostMessages.delete(t),n):[]},e.prototype.connect=function(t,n){if(n===void 0&&(n={}),this.disconnected){J.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),this.emitError(we.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}var i=new Bs.DataConnection(t,this,n);return this._addConnection(t,i),i},e.prototype.call=function(t,n,i){if(i===void 0&&(i={}),this.disconnected){J.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),this.emitError(we.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}if(!n){J.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}var s=new Os.MediaConnection(t,this,ri(ri({},i),{_stream:n}));return this._addConnection(t,s),s},e.prototype._addConnection=function(t,n){J.default.log("add connection ".concat(n.type,":").concat(n.connectionId," to peerId:").concat(t)),this._connections.has(t)||this._connections.set(t,[]),this._connections.get(t).push(n)},e.prototype._removeConnection=function(t){var n=this._connections.get(t.peer);if(n){var i=n.indexOf(t);i!==-1&&n.splice(i,1)}this._lostMessages.delete(t.connectionId)},e.prototype.getConnection=function(t,n){var i,s,a=this._connections.get(t);if(!a)return null;try{for(var o=si(a),c=o.next();!c.done;c=o.next()){var l=c.value;if(l.connectionId===n)return l}}catch(u){i={error:u}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}return null},e.prototype._delayedAbort=function(t,n){var i=this;setTimeout(function(){i._abort(t,n)},0)},e.prototype._abort=function(t,n){J.default.error("Aborting!"),this.emitError(t,n),this._lastServerId?this.disconnect():this.destroy()},e.prototype.emitError=function(t,n){J.default.error("Error:",n);var i;typeof n=="string"?i=new Error(n):i=n,i.type=t,this.emit("error",i)},e.prototype.destroy=function(){this.destroyed||(J.default.log("Destroy peer with ID:".concat(this.id)),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit("close"))},e.prototype._cleanup=function(){var t,n;try{for(var i=si(this._connections.keys()),s=i.next();!s.done;s=i.next()){var a=s.value;this._cleanupPeer(a),this._connections.delete(a)}}catch(o){t={error:o}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this.socket.removeAllListeners()},e.prototype._cleanupPeer=function(t){var n,i,s=this._connections.get(t);if(s)try{for(var a=si(s),o=a.next();!o.done;o=a.next()){var c=o.value;c.close()}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.disconnect=function(){if(!this.disconnected){var t=this.id;J.default.log("Disconnect peer with ID:".concat(t)),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=t,this._id=null,this.emit("disconnected",t)}},e.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)J.default.log("Attempting reconnection to server with ID ".concat(this._lastServerId)),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(!this.disconnected&&!this.open)J.default.error("In a hurry? We're still trying to make the initial connection!");else throw new Error("Peer ".concat(this.id," cannot reconnect because it is not disconnected from the server!"))}},e.prototype.listAllPeers=function(t){var n=this;t===void 0&&(t=function(i){}),this._api.listAllPeers().then(function(i){return t(i)}).catch(function(i){return n._abort(we.ServerError,i)})},e.DEFAULT_KEY="peerjs",e}(ni.EventEmitter),wc=ac.Peer;const Fu=Object.freeze(Object.defineProperty({__proto__:null,get Peer(){return Ns},default:wc,util:te},Symbol.toStringTag,{value:"Module"})),Vu=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function ju(r){return typeof r=="string"&&Vu.test(r)}const Ne=[];for(let r=0;r<256;++r)Ne.push((r+256).toString(16).slice(1));function Ju(r,e=0){return Ne[r[e+0]]+Ne[r[e+1]]+Ne[r[e+2]]+Ne[r[e+3]]+"-"+Ne[r[e+4]]+Ne[r[e+5]]+"-"+Ne[r[e+6]]+Ne[r[e+7]]+"-"+Ne[r[e+8]]+Ne[r[e+9]]+"-"+Ne[r[e+10]]+Ne[r[e+11]]+Ne[r[e+12]]+Ne[r[e+13]]+Ne[r[e+14]]+Ne[r[e+15]]}function Gu(r){if(!ju(r))throw TypeError("Invalid UUID");let e;const t=new Uint8Array(16);return t[0]=(e=parseInt(r.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t[4]=(e=parseInt(r.slice(9,13),16))>>>8,t[5]=e&255,t[6]=(e=parseInt(r.slice(14,18),16))>>>8,t[7]=e&255,t[8]=(e=parseInt(r.slice(19,23),16))>>>8,t[9]=e&255,t[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=e&255,t}function Wu(r){r=unescape(encodeURIComponent(r));const e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t));return e}const Hu="6ba7b810-9dad-11d1-80b4-00c04fd430c8",qu="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function Xu(r,e,t){function n(i,s,a,o){var c;if(typeof i=="string"&&(i=Wu(i)),typeof s=="string"&&(s=Gu(s)),((c=s)===null||c===void 0?void 0:c.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(s),l.set(i,s.length),l=t(l),l[6]=l[6]&15|e,l[8]=l[8]&63|128,a){o=o||0;for(let u=0;u<16;++u)a[o+u]=l[u];return a}return Ju(l)}try{n.name=r}catch{}return n.DNS=Hu,n.URL=qu,n}function Yu(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function Us(r,e){return r<<e|r>>>32-e}function Zu(r){const e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){const a=unescape(encodeURIComponent(r));r=[];for(let o=0;o<a.length;++o)r.push(a.charCodeAt(o))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);const n=r.length/4+2,i=Math.ceil(n/16),s=new Array(i);for(let a=0;a<i;++a){const o=new Uint32Array(16);for(let c=0;c<16;++c)o[c]=r[a*64+c*4]<<24|r[a*64+c*4+1]<<16|r[a*64+c*4+2]<<8|r[a*64+c*4+3];s[a]=o}s[i-1][14]=(r.length-1)*8/Math.pow(2,32),s[i-1][14]=Math.floor(s[i-1][14]),s[i-1][15]=(r.length-1)*8&4294967295;for(let a=0;a<i;++a){const o=new Uint32Array(80);for(let f=0;f<16;++f)o[f]=s[a][f];for(let f=16;f<80;++f)o[f]=Us(o[f-3]^o[f-8]^o[f-14]^o[f-16],1);let c=t[0],l=t[1],u=t[2],p=t[3],m=t[4];for(let f=0;f<80;++f){const x=Math.floor(f/20),w=Us(c,5)+Yu(x,l,u,p)+m+e[x]+o[f]>>>0;m=p,p=u,u=Us(l,30)>>>0,l=c,c=w}t[0]=t[0]+c>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+u>>>0,t[3]=t[3]+p>>>0,t[4]=t[4]+m>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}const Ku=Xu("v5",80,Zu);var _c={exports:{}},Tc={exports:{}},Mc;function Qu(){return Mc||(Mc=1,function(){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e={rotl:function(t,n){return t<<n|t>>>32-n},rotr:function(t,n){return t<<32-n|t>>>n},endian:function(t){if(t.constructor==Number)return e.rotl(t,8)&16711935|e.rotl(t,24)&4278255360;for(var n=0;n<t.length;n++)t[n]=e.endian(t[n]);return t},randomBytes:function(t){for(var n=[];t>0;t--)n.push(Math.floor(Math.random()*256));return n},bytesToWords:function(t){for(var n=[],i=0,s=0;i<t.length;i++,s+=8)n[s>>>5]|=t[i]<<24-s%32;return n},wordsToBytes:function(t){for(var n=[],i=0;i<t.length*32;i+=8)n.push(t[i>>>5]>>>24-i%32&255);return n},bytesToHex:function(t){for(var n=[],i=0;i<t.length;i++)n.push((t[i]>>>4).toString(16)),n.push((t[i]&15).toString(16));return n.join("")},hexToBytes:function(t){for(var n=[],i=0;i<t.length;i+=2)n.push(parseInt(t.substr(i,2),16));return n},bytesToBase64:function(t){for(var n=[],i=0;i<t.length;i+=3)for(var s=t[i]<<16|t[i+1]<<8|t[i+2],a=0;a<4;a++)i*8+a*6<=t.length*8?n.push(r.charAt(s>>>6*(3-a)&63)):n.push("=");return n.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/ig,"");for(var n=[],i=0,s=0;i<t.length;s=++i%4)s!=0&&n.push((r.indexOf(t.charAt(i-1))&Math.pow(2,-2*s+8)-1)<<s*2|r.indexOf(t.charAt(i))>>>6-s*2);return n}};Tc.exports=e}()),Tc.exports}var Ds,Cc;function Ec(){if(Cc)return Ds;Cc=1;var r={utf8:{stringToBytes:function(e){return r.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(r.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n)&255);return t},bytesToString:function(e){for(var t=[],n=0;n<e.length;n++)t.push(String.fromCharCode(e[n]));return t.join("")}}};return Ds=r,Ds}/*!
79
- * Determine if an object is a Buffer
80
- *
81
- * @author Feross Aboukhadijeh <https://feross.org>
82
- * @license MIT
83
- */var Ls,Pc;function $u(){if(Pc)return Ls;Pc=1,Ls=function(t){return t!=null&&(r(t)||e(t)||!!t._isBuffer)};function r(t){return!!t.constructor&&typeof t.constructor.isBuffer=="function"&&t.constructor.isBuffer(t)}function e(t){return typeof t.readFloatLE=="function"&&typeof t.slice=="function"&&r(t.slice(0,0))}return Ls}var kc;function eh(){return kc||(kc=1,function(){var r=Qu(),e=Ec().utf8,t=$u(),n=Ec().bin,i=function(s,a){s.constructor==String?a&&a.encoding==="binary"?s=n.stringToBytes(s):s=e.stringToBytes(s):t(s)?s=Array.prototype.slice.call(s,0):!Array.isArray(s)&&s.constructor!==Uint8Array&&(s=s.toString());for(var o=r.bytesToWords(s),c=s.length*8,l=1732584193,u=-271733879,p=-1732584194,m=271733878,f=0;f<o.length;f++)o[f]=(o[f]<<8|o[f]>>>24)&16711935|(o[f]<<24|o[f]>>>8)&4278255360;o[c>>>5]|=128<<c%32,o[(c+64>>>9<<4)+14]=c;for(var x=i._ff,w=i._gg,g=i._hh,v=i._ii,f=0;f<o.length;f+=16){var _=l,S=u,M=p,T=m;l=x(l,u,p,m,o[f+0],7,-680876936),m=x(m,l,u,p,o[f+1],12,-389564586),p=x(p,m,l,u,o[f+2],17,606105819),u=x(u,p,m,l,o[f+3],22,-1044525330),l=x(l,u,p,m,o[f+4],7,-176418897),m=x(m,l,u,p,o[f+5],12,1200080426),p=x(p,m,l,u,o[f+6],17,-1473231341),u=x(u,p,m,l,o[f+7],22,-45705983),l=x(l,u,p,m,o[f+8],7,1770035416),m=x(m,l,u,p,o[f+9],12,-1958414417),p=x(p,m,l,u,o[f+10],17,-42063),u=x(u,p,m,l,o[f+11],22,-1990404162),l=x(l,u,p,m,o[f+12],7,1804603682),m=x(m,l,u,p,o[f+13],12,-40341101),p=x(p,m,l,u,o[f+14],17,-1502002290),u=x(u,p,m,l,o[f+15],22,1236535329),l=w(l,u,p,m,o[f+1],5,-165796510),m=w(m,l,u,p,o[f+6],9,-1069501632),p=w(p,m,l,u,o[f+11],14,643717713),u=w(u,p,m,l,o[f+0],20,-373897302),l=w(l,u,p,m,o[f+5],5,-701558691),m=w(m,l,u,p,o[f+10],9,38016083),p=w(p,m,l,u,o[f+15],14,-660478335),u=w(u,p,m,l,o[f+4],20,-405537848),l=w(l,u,p,m,o[f+9],5,568446438),m=w(m,l,u,p,o[f+14],9,-1019803690),p=w(p,m,l,u,o[f+3],14,-187363961),u=w(u,p,m,l,o[f+8],20,1163531501),l=w(l,u,p,m,o[f+13],5,-1444681467),m=w(m,l,u,p,o[f+2],9,-51403784),p=w(p,m,l,u,o[f+7],14,1735328473),u=w(u,p,m,l,o[f+12],20,-1926607734),l=g(l,u,p,m,o[f+5],4,-378558),m=g(m,l,u,p,o[f+8],11,-2022574463),p=g(p,m,l,u,o[f+11],16,1839030562),u=g(u,p,m,l,o[f+14],23,-35309556),l=g(l,u,p,m,o[f+1],4,-1530992060),m=g(m,l,u,p,o[f+4],11,1272893353),p=g(p,m,l,u,o[f+7],16,-155497632),u=g(u,p,m,l,o[f+10],23,-1094730640),l=g(l,u,p,m,o[f+13],4,681279174),m=g(m,l,u,p,o[f+0],11,-358537222),p=g(p,m,l,u,o[f+3],16,-722521979),u=g(u,p,m,l,o[f+6],23,76029189),l=g(l,u,p,m,o[f+9],4,-640364487),m=g(m,l,u,p,o[f+12],11,-421815835),p=g(p,m,l,u,o[f+15],16,530742520),u=g(u,p,m,l,o[f+2],23,-995338651),l=v(l,u,p,m,o[f+0],6,-198630844),m=v(m,l,u,p,o[f+7],10,1126891415),p=v(p,m,l,u,o[f+14],15,-1416354905),u=v(u,p,m,l,o[f+5],21,-57434055),l=v(l,u,p,m,o[f+12],6,1700485571),m=v(m,l,u,p,o[f+3],10,-1894986606),p=v(p,m,l,u,o[f+10],15,-1051523),u=v(u,p,m,l,o[f+1],21,-2054922799),l=v(l,u,p,m,o[f+8],6,1873313359),m=v(m,l,u,p,o[f+15],10,-30611744),p=v(p,m,l,u,o[f+6],15,-1560198380),u=v(u,p,m,l,o[f+13],21,1309151649),l=v(l,u,p,m,o[f+4],6,-145523070),m=v(m,l,u,p,o[f+11],10,-1120210379),p=v(p,m,l,u,o[f+2],15,718787259),u=v(u,p,m,l,o[f+9],21,-343485551),l=l+_>>>0,u=u+S>>>0,p=p+M>>>0,m=m+T>>>0}return r.endian([l,u,p,m])};i._ff=function(s,a,o,c,l,u,p){var m=s+(a&o|~a&c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._gg=function(s,a,o,c,l,u,p){var m=s+(a&c|o&~c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._hh=function(s,a,o,c,l,u,p){var m=s+(a^o^c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._ii=function(s,a,o,c,l,u,p){var m=s+(o^(a|~c))+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._blocksize=16,i._digestsize=16,_c.exports=function(s,a){if(s==null)throw new Error("Illegal argument "+s);var o=r.wordsToBytes(i(s,a));return a&&a.asBytes?o:a&&a.asString?n.bytesToString(o):r.bytesToHex(o)}}()),_c.exports}var th=eh();const nh=lr(th),je=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Rc=1234567;const Ac=Math.PI/180,Oc=180/Math.PI;function ih(){const r=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(je[r&255]+je[r>>8&255]+je[r>>16&255]+je[r>>24&255]+"-"+je[e&255]+je[e>>8&255]+"-"+je[e>>16&15|64]+je[e>>24&255]+"-"+je[t&63|128]+je[t>>8&255]+"-"+je[t>>16&255]+je[t>>24&255]+je[n&255]+je[n>>8&255]+je[n>>16&255]+je[n>>24&255]).toLowerCase()}function Nt(r,e,t){return Math.max(e,Math.min(t,r))}function Ic(r,e){return(r%e+e)%e}function rh(r,e,t,n,i){return n+(r-e)*(i-n)/(t-e)}function sh(r,e,t){return r!==e?(t-r)/(e-r):0}function zc(r,e,t){return(1-t)*r+t*e}function oh(r,e,t,n){return zc(r,e,1-Math.exp(-t*n))}function ah(r,e=1){return e-Math.abs(Ic(r,e*2)-e)}function ch(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function lh(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function uh(r,e){return r+Math.floor(Math.random()*(e-r+1))}function hh(r,e){return r+Math.random()*(e-r)}function dh(r){return r*(.5-Math.random())}function ph(r){r!==void 0&&(Rc=r);let e=Rc+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function fh(r){return r*Ac}function mh(r){return r*Oc}function yh(r){return(r&r-1)===0&&r!==0}function gh(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function vh(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function Sh(r,e,t,n,i){const s=Math.cos,a=Math.sin,o=s(t/2),c=a(t/2),l=s((e+n)/2),u=a((e+n)/2),p=s((e-n)/2),m=a((e-n)/2),f=s((n-e)/2),x=a((n-e)/2);switch(i){case"XYX":r.set(o*u,c*p,c*m,o*l);break;case"YZY":r.set(c*m,o*u,c*p,o*l);break;case"ZXZ":r.set(c*p,c*m,o*u,o*l);break;case"XZX":r.set(o*u,c*x,c*f,o*l);break;case"YXY":r.set(c*f,o*u,c*x,o*l);break;case"ZYZ":r.set(c*x,c*f,o*u,o*l);break;default:console.warn("../math.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function bh(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function xh(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}const zn={DEG2RAD:Ac,RAD2DEG:Oc,generateUUID:ih,clamp:Nt,euclideanModulo:Ic,mapLinear:rh,inverseLerp:sh,lerp:zc,damp:oh,pingpong:ah,smoothstep:ch,smootherstep:lh,randInt:uh,randFloat:hh,randFloatSpread:dh,seededRandom:ph,degToRad:fh,radToDeg:mh,isPowerOfTwo:yh,ceilPowerOfTwo:gh,floorPowerOfTwo:vh,setQuaternionFromProperEuler:Sh,normalize:xh,denormalize:bh};class re{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,s,a,o){let c=n[i+0],l=n[i+1],u=n[i+2],p=n[i+3];const m=s[a+0],f=s[a+1],x=s[a+2],w=s[a+3];if(o===0){e[t+0]=c,e[t+1]=l,e[t+2]=u,e[t+3]=p;return}if(o===1){e[t+0]=m,e[t+1]=f,e[t+2]=x,e[t+3]=w;return}if(p!==w||c!==m||l!==f||u!==x){let g=1-o;const v=c*m+l*f+u*x+p*w,_=v>=0?1:-1,S=1-v*v;if(S>Number.EPSILON){const T=Math.sqrt(S),E=Math.atan2(T,v*_);g=Math.sin(g*E)/T,o=Math.sin(o*E)/T}const M=o*_;if(c=c*g+m*M,l=l*g+f*M,u=u*g+x*M,p=p*g+w*M,g===1-o){const T=1/Math.sqrt(c*c+l*l+u*u+p*p);c*=T,l*=T,u*=T,p*=T}}e[t]=c,e[t+1]=l,e[t+2]=u,e[t+3]=p}static multiplyQuaternionsFlat(e,t,n,i,s,a){const o=n[i],c=n[i+1],l=n[i+2],u=n[i+3],p=s[a],m=s[a+1],f=s[a+2],x=s[a+3];return e[t]=o*x+u*p+c*f-l*m,e[t+1]=c*x+u*m+l*p-o*f,e[t+2]=l*x+u*f+o*m-c*p,e[t+3]=u*x-o*p-c*m-l*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new re(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,i=e._y,s=e._z,a=e._order,o=Math.cos,c=Math.sin,l=o(n/2),u=o(i/2),p=o(s/2),m=c(n/2),f=c(i/2),x=c(s/2);switch(a){case"XYZ":this._x=m*u*p+l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p-m*f*x;break;case"YXZ":this._x=m*u*p+l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p+m*f*x;break;case"ZXY":this._x=m*u*p-l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p-m*f*x;break;case"ZYX":this._x=m*u*p-l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p+m*f*x;break;case"YZX":this._x=m*u*p+l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p-m*f*x;break;case"XZY":this._x=m*u*p-l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p+m*f*x;break;default:console.warn("../math.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],s=t[8],a=t[1],o=t[5],c=t[9],l=t[2],u=t[6],p=t[10],m=n+o+p;if(m>0){const f=.5/Math.sqrt(m+1);this._w=.25/f,this._x=(u-c)*f,this._y=(s-l)*f,this._z=(a-i)*f}else if(n>o&&n>p){const f=2*Math.sqrt(1+n-o-p);this._w=(u-c)/f,this._x=.25*f,this._y=(i+a)/f,this._z=(s+l)/f}else if(o>p){const f=2*Math.sqrt(1+o-n-p);this._w=(s-l)/f,this._x=(i+a)/f,this._y=.25*f,this._z=(c+u)/f}else{const f=2*Math.sqrt(1+p-n-o);this._w=(a-i)/f,this._x=(s+l)/f,this._y=(c+u)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Nt(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,s=e._z,a=e._w,o=t._x,c=t._y,l=t._z,u=t._w;return this._x=n*u+a*o+i*l-s*c,this._y=i*u+a*c+s*o-n*l,this._z=s*u+a*l+n*c-i*o,this._w=a*u-n*o-i*c-s*l,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,i=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+i*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=s,this;const c=1-o*o;if(c<=Number.EPSILON){const f=1-t;return this._w=f*a+t*this._w,this._x=f*n+t*this._x,this._y=f*i+t*this._y,this._z=f*s+t*this._z,this.normalize(),this}const l=Math.sqrt(c),u=Math.atan2(l,o),p=Math.sin((1-t)*u)/l,m=Math.sin(t*u)/l;return this._w=a*p+this._w*m,this._x=n*p+this._x*m,this._y=i*p+this._y*m,this._z=s*p+this._z*m,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class W{constructor(e=0,t=0,n=0){this.isVector3=!0,W.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new W(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(Bc.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Bc.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*i,this.y=s[1]*t+s[4]*n+s[7]*i,this.z=s[2]*t+s[5]*n+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*i+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*i+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*i+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,s=e.x,a=e.y,o=e.z,c=e.w,l=2*(a*i-o*n),u=2*(o*t-s*i),p=2*(s*n-a*t);return this.x=t+c*l+a*p-o*u,this.y=n+c*u+o*l-s*p,this.z=i+c*p+s*u-a*l,this}transformDirection(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i,this.y=s[1]*t+s[5]*n+s[9]*i,this.z=s[2]*t+s[6]*n+s[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,s=e.z,a=t.x,o=t.y,c=t.z;return this.x=i*c-s*o,this.y=s*a-n*c,this.z=n*o-i*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Fs.copy(this).projectOnVector(e),this.sub(Fs)}reflect(e){return this.sub(Fs.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Nt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this.z=Math.abs(this.z),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Fs=new W,Bc=new re,Sr=2e3,Nc=2001;class At{constructor(e,t,n,i,s,a,o,c,l,u,p,m,f,x,w,g){this.isMatrix4=!0,At.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l,u,p,m,f,x,w,g)}extractPosition(e){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)}multiplyToArray(e,t,n){return console.error("THREE.Matrix4: .multiplyToArray() has been removed."),this}setRotationFromQuaternion(e){return this.makeRotationFromQuaternion(e)}set(e,t,n,i,s,a,o,c,l,u,p,m,f,x,w,g){const v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=i,v[1]=s,v[5]=a,v[9]=o,v[13]=c,v[2]=l,v[6]=u,v[10]=p,v[14]=m,v[3]=f,v[7]=x,v[11]=w,v[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new At().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/Bn.setFromMatrixColumn(e,0).length(),s=1/Bn.setFromMatrixColumn(e,1).length(),a=1/Bn.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),c=Math.cos(i),l=Math.sin(i),u=Math.cos(s),p=Math.sin(s);if(e.order==="XYZ"){const m=a*u,f=a*p,x=o*u,w=o*p;t[0]=c*u,t[4]=-c*p,t[8]=l,t[1]=f+x*l,t[5]=m-w*l,t[9]=-o*c,t[2]=w-m*l,t[6]=x+f*l,t[10]=a*c}else if(e.order==="YXZ"){const m=c*u,f=c*p,x=l*u,w=l*p;t[0]=m+w*o,t[4]=x*o-f,t[8]=a*l,t[1]=a*p,t[5]=a*u,t[9]=-o,t[2]=f*o-x,t[6]=w+m*o,t[10]=a*c}else if(e.order==="ZXY"){const m=c*u,f=c*p,x=l*u,w=l*p;t[0]=m-w*o,t[4]=-a*p,t[8]=x+f*o,t[1]=f+x*o,t[5]=a*u,t[9]=w-m*o,t[2]=-a*l,t[6]=o,t[10]=a*c}else if(e.order==="ZYX"){const m=a*u,f=a*p,x=o*u,w=o*p;t[0]=c*u,t[4]=x*l-f,t[8]=m*l+w,t[1]=c*p,t[5]=w*l+m,t[9]=f*l-x,t[2]=-l,t[6]=o*c,t[10]=a*c}else if(e.order==="YZX"){const m=a*c,f=a*l,x=o*c,w=o*l;t[0]=c*u,t[4]=w-m*p,t[8]=x*p+f,t[1]=p,t[5]=a*u,t[9]=-o*u,t[2]=-l*u,t[6]=f*p+x,t[10]=m-w*p}else if(e.order==="XZY"){const m=a*c,f=a*l,x=o*c,w=o*l;t[0]=c*u,t[4]=-p,t[8]=l*u,t[1]=m*p+w,t[5]=a*u,t[9]=f*p-x,t[2]=x*p-f,t[6]=o*u,t[10]=w*p+m}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(wh,e,_h)}lookAt(e,t,n){const i=this.elements;return at.subVectors(e,t),at.lengthSq()===0&&(at.z=1),at.normalize(),nn.crossVectors(n,at),nn.lengthSq()===0&&(Math.abs(n.z)===1?at.x+=1e-4:at.z+=1e-4,at.normalize(),nn.crossVectors(n,at)),nn.normalize(),br.crossVectors(at,nn),i[0]=nn.x,i[4]=br.x,i[8]=at.x,i[1]=nn.y,i[5]=br.y,i[9]=at.y,i[2]=nn.z,i[6]=br.z,i[10]=at.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],u=n[1],p=n[5],m=n[9],f=n[13],x=n[2],w=n[6],g=n[10],v=n[14],_=n[3],S=n[7],M=n[11],T=n[15],E=i[0],P=i[4],z=i[8],R=i[12],A=i[1],B=i[5],O=i[9],U=i[13],L=i[2],G=i[6],H=i[10],Q=i[14],j=i[3],pe=i[7],ie=i[11],he=i[15];return s[0]=a*E+o*A+c*L+l*j,s[4]=a*P+o*B+c*G+l*pe,s[8]=a*z+o*O+c*H+l*ie,s[12]=a*R+o*U+c*Q+l*he,s[1]=u*E+p*A+m*L+f*j,s[5]=u*P+p*B+m*G+f*pe,s[9]=u*z+p*O+m*H+f*ie,s[13]=u*R+p*U+m*Q+f*he,s[2]=x*E+w*A+g*L+v*j,s[6]=x*P+w*B+g*G+v*pe,s[10]=x*z+w*O+g*H+v*ie,s[14]=x*R+w*U+g*Q+v*he,s[3]=_*E+S*A+M*L+T*j,s[7]=_*P+S*B+M*G+T*pe,s[11]=_*z+S*O+M*H+T*ie,s[15]=_*R+S*U+M*Q+T*he,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],a=e[1],o=e[5],c=e[9],l=e[13],u=e[2],p=e[6],m=e[10],f=e[14],x=e[3],w=e[7],g=e[11],v=e[15];return x*(+s*c*p-i*l*p-s*o*m+n*l*m+i*o*f-n*c*f)+w*(+t*c*f-t*l*m+s*a*m-i*a*f+i*l*u-s*c*u)+g*(+t*l*p-t*o*f-s*a*p+n*a*f+s*o*u-n*l*u)+v*(-i*o*u-t*c*p+t*o*m+i*a*p-n*a*m+n*c*u)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8],p=e[9],m=e[10],f=e[11],x=e[12],w=e[13],g=e[14],v=e[15],_=p*g*l-w*m*l+w*c*f-o*g*f-p*c*v+o*m*v,S=x*m*l-u*g*l-x*c*f+a*g*f+u*c*v-a*m*v,M=u*w*l-x*p*l+x*o*f-a*w*f-u*o*v+a*p*v,T=x*p*c-u*w*c-x*o*m+a*w*m+u*o*g-a*p*g,E=t*_+n*S+i*M+s*T;if(E===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const P=1/E;return e[0]=_*P,e[1]=(w*m*s-p*g*s-w*i*f+n*g*f+p*i*v-n*m*v)*P,e[2]=(o*g*s-w*c*s+w*i*l-n*g*l-o*i*v+n*c*v)*P,e[3]=(p*c*s-o*m*s-p*i*l+n*m*l+o*i*f-n*c*f)*P,e[4]=S*P,e[5]=(u*g*s-x*m*s+x*i*f-t*g*f-u*i*v+t*m*v)*P,e[6]=(x*c*s-a*g*s-x*i*l+t*g*l+a*i*v-t*c*v)*P,e[7]=(a*m*s-u*c*s+u*i*l-t*m*l-a*i*f+t*c*f)*P,e[8]=M*P,e[9]=(x*p*s-u*w*s-x*n*f+t*w*f+u*n*v-t*p*v)*P,e[10]=(a*w*s-x*o*s+x*n*l-t*w*l-a*n*v+t*o*v)*P,e[11]=(u*o*s-a*p*s-u*n*l+t*p*l+a*n*f-t*o*f)*P,e[12]=T*P,e[13]=(u*w*i-x*p*i+x*n*m-t*w*m-u*n*g+t*p*g)*P,e[14]=(x*o*i-a*w*i-x*n*c+t*w*c+a*n*g-t*o*g)*P,e[15]=(a*p*i-u*o*i+u*n*c-t*p*c-a*n*m+t*o*m)*P,this}scale(e){const t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=i,t[8]*=s,t[1]*=n,t[5]*=i,t[9]*=s,t[2]*=n,t[6]*=i,t[10]*=s,t[3]*=n,t[7]*=i,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),s=1-n,a=e.x,o=e.y,c=e.z,l=s*a,u=s*o;return this.set(l*a+n,l*o-i*c,l*c+i*o,0,l*o+i*c,u*o+n,u*c-i*a,0,l*c-i*o,u*c+i*a,s*c*c+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,s,a){return this.set(1,n,s,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,s=t._x,a=t._y,o=t._z,c=t._w,l=s+s,u=a+a,p=o+o,m=s*l,f=s*u,x=s*p,w=a*u,g=a*p,v=o*p,_=c*l,S=c*u,M=c*p,T=n.x,E=n.y,P=n.z;return i[0]=(1-(w+v))*T,i[1]=(f+M)*T,i[2]=(x-S)*T,i[3]=0,i[4]=(f-M)*E,i[5]=(1-(m+v))*E,i[6]=(g+_)*E,i[7]=0,i[8]=(x+S)*P,i[9]=(g-_)*P,i[10]=(1-(m+w))*P,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let s=Bn.set(i[0],i[1],i[2]).length();const a=Bn.set(i[4],i[5],i[6]).length(),o=Bn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],kt.copy(this);const c=1/s,l=1/a,u=1/o;return kt.elements[0]*=c,kt.elements[1]*=c,kt.elements[2]*=c,kt.elements[4]*=l,kt.elements[5]*=l,kt.elements[6]*=l,kt.elements[8]*=u,kt.elements[9]*=u,kt.elements[10]*=u,t.setFromRotationMatrix(kt),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,i,s,a,o=Sr){const c=this.elements,l=2*s/(t-e),u=2*s/(n-i),p=(t+e)/(t-e),m=(n+i)/(n-i);let f,x;if(o===Sr)f=-(a+s)/(a-s),x=-2*a*s/(a-s);else if(o===Nc)f=-a/(a-s),x=-a*s/(a-s);else throw new Error("Matrix4.makePerspective(): Invalid coordinate system: "+o);return c[0]=l,c[4]=0,c[8]=p,c[12]=0,c[1]=0,c[5]=u,c[9]=m,c[13]=0,c[2]=0,c[6]=0,c[10]=f,c[14]=x,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,i,s,a,o=Sr){const c=this.elements,l=1/(t-e),u=1/(n-i),p=1/(a-s),m=(t+e)*l,f=(n+i)*u;let x,w;if(o===Sr)x=(a+s)*p,w=-2*p;else if(o===Nc)x=s*p,w=-1*p;else throw new Error("../math.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return c[0]=2*l,c[4]=0,c[8]=0,c[12]=-m,c[1]=0,c[5]=2*u,c[9]=0,c[13]=-f,c[2]=0,c[6]=0,c[10]=w,c[14]=-x,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const Bn=new W,kt=new At,wh=new W(0,0,0),_h=new W(1,1,1),nn=new W,br=new W,at=new W,Uc=new At,Dc=new re;class Ti{constructor(e=0,t=0,n=0,i=Ti.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new Ti(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,s=i[0],a=i[4],o=i[8],c=i[1],l=i[5],u=i[9],p=i[2],m=i[6],f=i[10];switch(t){case"XYZ":this._y=Math.asin(Nt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,f),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(m,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Nt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-p,s),this._z=0);break;case"ZXY":this._x=Math.asin(Nt(m,-1,1)),Math.abs(m)<.9999999?(this._y=Math.atan2(-p,f),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-Nt(p,-1,1)),Math.abs(p)<.9999999?(this._x=Math.atan2(m,f),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(Nt(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-p,s)):(this._x=0,this._y=Math.atan2(o,f));break;case"XZY":this._z=Math.asin(-Nt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(m,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-u,f),this._y=0);break;default:console.warn("../math.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Uc.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Uc,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Dc.setFromEuler(this),this.setFromQuaternion(Dc,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(e){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ti.DEFAULT_ORDER="XYZ";class Wn{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new Wn(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Nt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*i+e.x,this.y=s*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}Wn.isVector2=!0;class nt{constructor(e=0,t=0,n=0,i=1){nt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new nt(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,s;const a=e.elements,o=a[0],c=a[4],l=a[8],u=a[1],p=a[5],m=a[9],f=a[2],x=a[6],w=a[10];if(Math.abs(c-u)<.01&&Math.abs(l-f)<.01&&Math.abs(m-x)<.01){if(Math.abs(c+u)<.1&&Math.abs(l+f)<.1&&Math.abs(m+x)<.1&&Math.abs(o+p+w-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const v=(o+1)/2,_=(p+1)/2,S=(w+1)/2,M=(c+u)/4,T=(l+f)/4,E=(m+x)/4;return v>_&&v>S?v<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(v),i=M/n,s=T/n):_>S?_<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(_),n=M/i,s=E/i):S<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(S),n=T/s,i=E/s),this.set(n,i,s,t),this}let g=Math.sqrt((x-m)*(x-m)+(l-f)*(l-f)+(u-c)*(u-c));return Math.abs(g)<.001&&(g=1),this.x=(x-m)/g,this.y=(l-f)/g,this.z=(u-c)/g,this.w=Math.acos((o+p+w-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Lt{constructor(e,t,n,i,s,a,o,c,l){Lt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l)}set(e,t,n,i,s,a,o,c,l){const u=this.elements;return u[0]=e,u[1]=i,u[2]=o,u[3]=t,u[4]=s,u[5]=c,u[6]=n,u[7]=a,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],u=n[4],p=n[7],m=n[2],f=n[5],x=n[8],w=i[0],g=i[3],v=i[6],_=i[1],S=i[4],M=i[7],T=i[2],E=i[5],P=i[8];return s[0]=a*w+o*_+c*T,s[3]=a*g+o*S+c*E,s[6]=a*v+o*M+c*P,s[1]=l*w+u*_+p*T,s[4]=l*g+u*S+p*E,s[7]=l*v+u*M+p*P,s[2]=m*w+f*_+x*T,s[5]=m*g+f*S+x*E,s[8]=m*v+f*M+x*P,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8];return t*a*u-t*o*l-n*s*u+n*o*c+i*s*l-i*a*c}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8],p=u*a-o*l,m=o*c-u*s,f=l*s-a*c,x=t*p+n*m+i*f;if(x===0)return this.set(0,0,0,0,0,0,0,0,0);const w=1/x;return e[0]=p*w,e[1]=(i*l-u*n)*w,e[2]=(o*n-i*a)*w,e[3]=m*w,e[4]=(u*t-i*c)*w,e[5]=(i*s-o*t)*w,e[6]=f*w,e[7]=(n*c-l*t)*w,e[8]=(a*t-n*s)*w,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,a,o){const c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+e,-i*l,i*c,-i*(-l*a+c*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Vs.makeScale(e,t)),this}rotate(e){return this.premultiply(Vs.makeRotation(-e)),this}translate(e,t){return this.premultiply(Vs.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new Lt().fromArray(this.elements)}}const Vs=new Lt;var Ze;(function(r){r[r.Random=0]="Random",r[r.Loop=1]="Loop",r[r.PingPong=2]="PingPong",r[r.Burst=3]="Burst"})(Ze||(Ze={}));function oi(r,e,t,n){let i;switch(Ze.Random===r?e=Math.random():Ze.Burst===r&&n.isBursting&&(e=n.burstParticleIndex/n.burstParticleCount),t>0?i=Math.floor(e/t)*t:i=e,r){case Ze.Loop:i=i%1;break;case Ze.PingPong:i=Math.abs(i%2-1);break}return i}class Tn{constructor(e,t,n,i){this.p=[e,t,n,i]}genValue(e){const t=e*e,n=e*e*e,i=1-e,s=i*i,a=s*i;return this.p[0]*a+this.p[1]*s*e*3+this.p[2]*i*t*3+this.p[3]*n}derivativeCoefficients(e){const t=[];for(let n=e,i=n.length-1;i>0;i--){const s=[];for(let a=0;a<i;a++){const o=i*(n[a+1]-n[a]);s.push(o)}t.push(s),n=s}return t}getSlope(e){const t=this.derivativeCoefficients(this.p)[0],n=1-e,i=n*n,s=n*e*2,a=e*e;return i*t[0]+s*t[1]+a*t[2]}controlCurve(e,t){this.p[1]=e/3+this.p[0],this.p[2]=this.p[3]-t/3}hull(e){let t=this.p,n=[],i,s=0,a=0,o=0;const c=[];for(c[s++]=t[0],c[s++]=t[1],c[s++]=t[2],c[s++]=t[3];t.length>1;){for(n=[],a=0,o=t.length-1;a<o;a++)i=e*t[a]+(1-e)*t[a+1],c[s++]=i,n.push(i);t=n}return c}split(e){const t=this.hull(e);return{left:new Tn(t[0],t[4],t[7],t[9]),right:new Tn(t[9],t[8],t[6],t[3]),span:t}}clone(){return new Tn(this.p[0],this.p[1],this.p[2],this.p[3])}toJSON(){return{p0:this.p[0],p1:this.p[1],p2:this.p[2],p3:this.p[3]}}static fromJSON(e){return new Tn(e.p0,e.p1,e.p2,e.p3)}}const ai=r=>({r:r.x,g:r.y,b:r.z,a:r.w}),ci=r=>new nt(r.r,r.g,r.b,r.a),Th=(r,e)=>{switch(e){case"Vector3":return new W(r.x,r.y,r.z);case"Vector4":return new nt(r.x,r.y,r.z,r.w);case"Color":return new W(r.r,r.g,r.b);case"Number":return r;default:return r}},Mh=(r,e)=>{switch(e){case"Vector3":return{x:r.x,y:r.y,z:r.z};case"Vector4":return{x:r.x,y:r.y,z:r.z,w:r.w};case"Color":return{r:r.x,g:r.y,b:r.z};case"Number":return r;default:return r}};class Qr{constructor(e,t){this.a=e,this.b=t,this.type="value"}startGen(e){}genColor(e,t){const n=Math.random();return t.copy(this.a).lerp(this.b,n)}toJSON(){return{type:"RandomColor",a:ai(this.a),b:ai(this.b)}}static fromJSON(e){return new Qr(ci(e.a),ci(e.b))}clone(){return new Qr(this.a.clone(),this.b.clone())}}class Hn{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t){return this.indexCount===-1&&this.startGen(e),t.copy(this.a).lerp(this.b,e[this.indexCount])}toJSON(){return{type:"ColorRange",a:ai(this.a),b:ai(this.b)}}static fromJSON(e){return new Hn(ci(e.a),ci(e.b))}clone(){return new Hn(this.a.clone(),this.b.clone())}}class un{constructor(e,t){this.subType=t,this.type="function",this.keys=e}findKey(e){let t=0,n=0,i=this.keys.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.getStartX(s)&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.keys[e][1]}getEndX(e){return e+1<this.keys.length?this.keys[e+1][1]:1}genValue(e,t){const n=this.findKey(t);return this.subType==="Number"?n===-1?this.keys[0][0]:n+1>=this.keys.length?this.keys[this.keys.length-1][0]:(this.keys[n+1][0]-this.keys[n][0])*((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))+this.keys[n][0]:n===-1?e.copy(this.keys[0][0]):n+1>=this.keys.length?e.copy(this.keys[this.keys.length-1][0]):e.copy(this.keys[n][0]).lerp(this.keys[n+1][0],(t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toJSON(){return this.keys[0][0].constructor.name,{type:"CLinearFunction",subType:this.subType,keys:this.keys.map(([e,t])=>({value:Mh(e,this.subType),pos:t}))}}static fromJSON(e){return new un(e.keys.map(t=>[Th(t.value,e.subType),t.pos]),e.subType)}clone(){return this.subType==="Number"?new un(this.keys.map(([e,t])=>[e,t]),this.subType):new un(this.keys.map(([e,t])=>[e.clone(),t]),this.subType)}}const xr=new W;class Pn{constructor(e=[[new W(0,0,0),0],[new W(1,1,1),0]],t=[[1,0],[1,1]]){this.type="function",this.color=new un(e,"Color"),this.alpha=new un(t,"Number")}genColor(e,t,n){return this.color.genValue(xr,n),t.set(xr.x,xr.y,xr.z,this.alpha.genValue(1,n))}toJSON(){return{type:"Gradient",color:this.color.toJSON(),alpha:this.alpha.toJSON()}}static fromJSON(e){if(e.functions){const t=e.functions.map(n=>[Hn.fromJSON(n.function).a,n.start]);return e.functions.length>0&&t.push([Hn.fromJSON(e.functions[e.functions.length-1].function).b,1]),new Pn(t.map(n=>[new W(n[0].x,n[0].y,n[0].z),n[1]]),t.map(n=>[n[0].w,n[1]]))}else{const t=new Pn;return t.alpha=un.fromJSON(e.alpha),t.color=un.fromJSON(e.color),t}}clone(){const e=new Pn;return e.alpha=this.alpha.clone(),e.color=this.color.clone(),e}startGen(e){}}const js=new nt;class $r{constructor(e,t){this.indexCount=0,this.type="function",this.gradient1=e,this.gradient2=t}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t,n){return this.gradient1.genColor(e,t,n),this.gradient2.genColor(e,js,n),e&&e[this.indexCount]!==void 0?t.lerp(js,e[this.indexCount]):t.lerp(js,Math.random()),t}toJSON(){return{type:"RandomColorBetweenGradient",gradient1:this.gradient1.toJSON(),gradient2:this.gradient2.toJSON()}}static fromJSON(e){return new $r(Pn.fromJSON(e.gradient1),Pn.fromJSON(e.gradient2))}clone(){return new $r(this.gradient1.clone(),this.gradient2.clone())}}class Mn{constructor(e){this.color=e,this.type="value"}startGen(e){}genColor(e,t){return t.copy(this.color)}toJSON(){return{type:"ConstantColor",color:ai(this.color)}}static fromJSON(e){return new Mn(ci(e.color))}clone(){return new Mn(this.color.clone())}}function Js(r){switch(r.type){case"ConstantColor":return Mn.fromJSON(r);case"ColorRange":return Hn.fromJSON(r);case"RandomColor":return Qr.fromJSON(r);case"Gradient":return Pn.fromJSON(r);case"RandomColorBetweenGradient":return $r.fromJSON(r);default:return new Mn(new nt(1,1,1,1))}}class ne{constructor(e){this.value=e,this.type="value"}startGen(e){}genValue(e){return this.value}toJSON(){return{type:"ConstantValue",value:this.value}}static fromJSON(e){return new ne(e.value)}clone(){return new ne(this.value)}}class Cn{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genValue(e){return this.indexCount===-1&&this.startGen(e),zn.lerp(this.a,this.b,e[this.indexCount])}toJSON(){return{type:"IntervalValue",a:this.a,b:this.b}}static fromJSON(e){return new Cn(e.a,e.b)}clone(){return new Cn(this.a,this.b)}}class Ch{constructor(){this.functions=new Array}findFunction(e){let t=0,n=0,i=this.functions.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.functions[s][1]&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.functions[e][1]}setStartX(e,t){e>0&&(this.functions[e][1]=t)}getEndX(e){return e+1<this.functions.length?this.functions[e+1][1]:1}setEndX(e,t){e+1<this.functions.length&&(this.functions[e+1][1]=t)}insertFunction(e,t){const n=this.findFunction(e);this.functions.splice(n+1,0,[t,e])}removeFunction(e){return this.functions.splice(e,1)[0][0]}getFunction(e){return this.functions[e][0]}setFunction(e,t){this.functions[e][0]=t}get numOfFunctions(){return this.functions.length}}class Mi extends Ch{constructor(e=[[new Tn(0,1/3,1/3*2,1),0]]){super(),this.type="function",this.functions=e}genValue(e,t=0){const n=this.findFunction(t);return n===-1?0:this.functions[n][0].genValue((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toSVG(e,t){if(t<1)return"";let n=["M",0,this.functions[0][0].p[0]].join(" ");for(let i=1/t;i<=1;i+=1/t)n=[n,"L",i*e,this.genValue(void 0,i)].join(" ");return n}toJSON(){return{type:"PiecewiseBezier",functions:this.functions.map(([e,t])=>({function:e.toJSON(),start:t}))}}static fromJSON(e){return new Mi(e.functions.map(t=>[Tn.fromJSON(t.function),t.start]))}clone(){return new Mi(this.functions.map(([e,t])=>[e.clone(),t]))}startGen(e){}}function $(r){switch(r.type){case"ConstantValue":return ne.fromJSON(r);case"IntervalValue":return Cn.fromJSON(r);case"PiecewiseBezier":return Mi.fromJSON(r);default:return new ne(0)}}class Ci{constructor(){this.indexCount=0,this.type="rotation"}startGen(e){this.indexCount=e.length,e.push(new re);let t,n,i,s,a,o;do t=Math.random()*2-1,n=Math.random()*2-1,i=t*t+n*n;while(i>1);do s=Math.random()*2-1,a=Math.random()*2-1,o=s*s+a*a;while(o>1);const c=Math.sqrt((1-i)/o);e[this.indexCount].set(t,n,c*s,c*a)}genValue(e,t,n,i){return this.indexCount===-1&&this.startGen(e),t.copy(e[this.indexCount]),t}toJSON(){return{type:"RandomQuat"}}static fromJSON(e){return new Ci}clone(){return new Ci}}class Ei{constructor(e,t){this.axis=e,this.angle=t,this.type="rotation"}startGen(e){this.angle.startGen(e)}genValue(e,t,n,i){return t.setFromAxisAngle(this.axis,this.angle.genValue(e,i)*n)}toJSON(){return{type:"AxisAngle",axis:{x:this.axis.x,y:this.axis.y,z:this.axis.z},angle:this.angle.toJSON()}}static fromJSON(e){return new Ei(new W(e.axis.x,e.axis.y,e.axis.z),$(e.angle))}clone(){return new Ei(this.axis.clone(),this.angle.clone())}}class es{constructor(e,t,n,i){this.angleX=e,this.angleY=t,this.angleZ=n,this.type="rotation",this.eular=new Ti(0,0,0,i)}startGen(e){this.angleX.startGen(e),this.angleY.startGen(e),this.angleZ.startGen(e)}genValue(e,t,n,i){return this.eular.set(this.angleX.genValue(e,i)*n,this.angleY.genValue(e,i)*n,this.angleZ.genValue(e,i)*n),t.setFromEuler(this.eular)}toJSON(){return{type:"Euler",angleX:this.angleX.toJSON(),angleY:this.angleY.toJSON(),angleZ:this.angleZ.toJSON(),eulerOrder:this.eular.order}}static fromJSON(e){return new es($(e.angleX),$(e.angleY),$(e.angleZ),e.eulerOrder)}clone(){return new es(this.angleX,this.angleY,this.angleZ,this.eular.order)}}function Lc(r){switch(r.type){case"AxisAngle":return Ei.fromJSON(r);case"Euler":return es.fromJSON(r);case"RandomQuat":return Ci.fromJSON(r);default:return new Ci}}class En{constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="vec3function"}startGen(e){this.x.startGen(e),this.y.startGen(e),this.z.startGen(e)}genValue(e,t,n){return t.set(this.x.genValue(e,n),this.y.genValue(e,n),this.z.genValue(e,n))}toJSON(){return{type:"Vector3Function",x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new En($(e.x),$(e.y),$(e.z))}clone(){return new En(this.x,this.y,this.z)}}function Eh(r){switch(r.type){case"Vector3Function":return En.fromJSON(r);default:return new En(new ne(0),new ne(0),new ne(0))}}function wr(r){switch(r.type){case"ConstantValue":case"IntervalValue":case"PiecewiseBezier":return $(r);case"AxisAngle":case"RandomQuat":case"Euler":return Lc(r);case"Vector3Function":return Eh(r);default:return new ne(0)}}class Pi{constructor(e={}){var t,n,i,s,a,o,c;this.type="cone",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.angle=(s=e.angle)!==null&&s!==void 0?s:Math.PI/6,this.mode=(a=e.mode)!==null&&a!==void 0?a:Ze.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ne(1),this.memory=[]}update(e,t){Ze.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=zn.lerp(1-this.thickness,1,Math.random()),s=n*this.arc,a=Math.sqrt(i),o=Math.sin(s),c=Math.cos(s);e.position.x=a*c,e.position.y=a*o,e.position.z=0;const l=this.angle*a;e.velocity.set(0,0,Math.cos(l)).addScaledVector(e.position,Math.sin(l)).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius)}toJSON(){return{type:"cone",radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Pi({radius:e.radius,arc:e.arc,thickness:e.thickness,angle:e.angle,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new Pi({radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class ki{constructor(e={}){var t,n,i,s,a,o;this.type="circle",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:Ze.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[]}update(e,t){this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=zn.lerp(1-this.thickness,1,Math.random()),s=n*this.arc;e.position.x=Math.cos(s),e.position.y=Math.sin(s),e.position.z=0,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i)}toJSON(){return{type:"circle",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new ki({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new ki({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}function _r(r,e){return Math.floor(Math.random()*(e-r))+r}const Tr=new W(0,1,0),Mr=new W(0,0,0),Ph=new W(1,1,1),Fc=new W(0,0,1);class Ri{constructor(e={}){var t,n,i,s,a,o,c;this.type="donut",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.donutRadius=(s=e.donutRadius)!==null&&s!==void 0?s:this.radius*.2,this.mode=(a=e.mode)!==null&&a!==void 0?a:Ze.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ne(1),this.memory=[],this._m1=new At}update(e,t){Ze.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=zn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=i*Math.PI*2,c=Math.sin(a),l=Math.cos(a);e.position.x=this.radius*l,e.position.y=this.radius*c,e.position.z=0,e.velocity.z=this.donutRadius*s*Math.sin(o),e.velocity.x=this.donutRadius*s*Math.cos(o)*l,e.velocity.y=this.donutRadius*s*Math.cos(o)*c,e.position.add(e.velocity),e.velocity.normalize().multiplyScalar(e.startSpeed),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.velocity,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"donut",radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Ri({radius:e.radius,arc:e.arc,thickness:e.thickness,donutRadius:e.donutRadius,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new Ri({radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Ai{constructor(){this.type="point",this._m1=new At}update(e,t){}initialize(e){const t=Math.random(),n=Math.random(),i=t*Math.PI*2,s=Math.acos(2*n-1),a=Math.cbrt(Math.random()),o=Math.sin(i),c=Math.cos(i),l=Math.sin(s),u=Math.cos(s);e.velocity.x=a*l*c,e.velocity.y=a*l*o,e.velocity.z=a*u,e.velocity.multiplyScalar(e.startSpeed),e.position.setScalar(0),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"point"}}static fromJSON(e){return new Ai}clone(){return new Ai}}class qn{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:Ze.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[],this._m1=new At}update(e,t){Ze.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=zn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(2*i-1),c=Math.sin(a),l=Math.cos(a),u=Math.sin(o),p=Math.cos(o);e.position.x=u*l,e.position.y=u*c,e.position.z=p,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"sphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new qn({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new qn({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Oi{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:Ze.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[],this._m1=new At}update(e,t){Ze.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=zn.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(i),c=Math.sin(a),l=Math.cos(a),u=Math.sin(o),p=Math.cos(o);e.position.x=u*l,e.position.y=u*c,e.position.z=p,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"hemisphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Oi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new Oi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Ii{constructor(e={}){var t,n,i,s;this.type="grid",this.width=(t=e.width)!==null&&t!==void 0?t:1,this.height=(n=e.height)!==null&&n!==void 0?n:1,this.column=(i=e.column)!==null&&i!==void 0?i:10,this.row=(s=e.row)!==null&&s!==void 0?s:10}initialize(e){const t=Math.floor(Math.random()*this.row),n=Math.floor(Math.random()*this.column);e.position.x=n*this.width/this.column-this.width/2,e.position.y=t*this.height/this.row-this.height/2,e.position.z=0,e.velocity.set(0,0,e.startSpeed)}toJSON(){return{type:"grid",width:this.width,height:this.height,column:this.column,row:this.row}}static fromJSON(e){return new Ii(e)}clone(){return new Ii({width:this.width,height:this.height,column:this.column,row:this.row})}update(e,t){}}const Gs={circle:{type:"circle",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:ki,loadJSON:ki.fromJSON},cone:{type:"cone",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Pi,loadJSON:Pi.fromJSON},donut:{type:"donut",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["donutRadius",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Ri,loadJSON:Ri.fromJSON},point:{type:"point",params:[],constructor:Ai,loadJSON:Ai.fromJSON},sphere:{type:"sphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:qn,loadJSON:qn.fromJSON},hemisphere:{type:"hemisphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Oi,loadJSON:Oi.fromJSON},grid:{type:"grid",params:[["width",["number"]],["height",["number"]],["rows",["number"]],["column",["number"]]],constructor:Ii,loadJSON:Ii.fromJSON}};function kh(r,e){return Gs[r.type].loadJSON(r,e)}class zi{constructor(e){this.color=e,this.type="ColorOverLife"}initialize(e){this.color.startGen(e.memory)}update(e,t){this.color.genColor(e.memory,e.color,e.age/e.life),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON()}}static fromJSON(e){return new zi(Js(e.color))}clone(){return new zi(this.color.clone())}reset(){}}class Bi{constructor(e){this.angularVelocity=e,this.type="RotationOverLife"}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){typeof e.rotation=="number"&&(e.rotation+=t*this.angularVelocity.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Bi($(e.angularVelocity))}frameUpdate(e){}clone(){return new Bi(this.angularVelocity.clone())}reset(){}}class Ni{constructor(e){this.angularVelocity=e,this.type="Rotation3DOverLife",this.tempQuat=new re,this.tempQuat2=new re}initialize(e){e.rotation instanceof re&&(e.angularVelocity=new re,this.angularVelocity.startGen(e.memory))}update(e,t){e.rotation instanceof re&&(this.angularVelocity.genValue(e.memory,this.tempQuat,t,e.age/e.life),e.rotation.multiply(this.tempQuat))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Ni(Lc(e.angularVelocity))}frameUpdate(e){}clone(){return new Ni(this.angularVelocity.clone())}reset(){}}class Ui{initialize(e,t){this.ps=t,this.x.startGen(e.memory),this.y.startGen(e.memory),this.z.startGen(e.memory)}constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="ForceOverLife",this._temp=new W,this._tempScale=new W,this._tempQ=new re}update(e,t){this._temp.set(this.x.genValue(e.memory,e.age/e.life),this.y.genValue(e.memory,e.age/e.life),this.z.genValue(e.memory,e.age/e.life)),this.ps.worldSpace?e.velocity.addScaledVector(this._temp,t):(this._temp.multiply(this._tempScale).applyQuaternion(this._tempQ),e.velocity.addScaledVector(this._temp,t))}toJSON(){return{type:this.type,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new Ui($(e.x),$(e.y),$(e.z))}frameUpdate(e){if(this.ps&&!this.ps.worldSpace){const t=this._temp,n=this._tempQ,i=this._tempScale;this.ps.emitter.matrixWorld.decompose(t,n,i),n.invert(),i.set(1/i.x,1/i.y,1/i.z)}}clone(){return new Ui(this.x.clone(),this.y.clone(),this.z.clone())}reset(){}}class Di{initialize(e){this.size.startGen(e.memory)}constructor(e){this.size=e,this.type="SizeOverLife"}update(e){this.size instanceof En?this.size.genValue(e.memory,e.size,e.age/e.life).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,size:this.size.toJSON()}}static fromJSON(e){return new Di(wr(e.size))}frameUpdate(e){}clone(){return new Di(this.size.clone())}reset(){}}class Li{initialize(e){this.speed.startGen(e.memory)}constructor(e){this.speed=e,this.type="SpeedOverLife"}update(e){e.speedModifier=this.speed.genValue(e.memory,e.age/e.life)}toJSON(){return{type:this.type,speed:this.speed.toJSON()}}static fromJSON(e){return new Li($(e.speed))}frameUpdate(e){}clone(){return new Li(this.speed.clone())}reset(){}}class Fi{constructor(e){this.frame=e,this.type="FrameOverLife"}initialize(e){this.frame.startGen(e.memory)}update(e,t){this.frame instanceof Mi&&(e.uvTile=this.frame.genValue(e.memory,e.age/e.life))}frameUpdate(e){}toJSON(){return{type:this.type,frame:this.frame.toJSON()}}static fromJSON(e){return new Fi($(e.frame))}clone(){return new Fi(this.frame.clone())}reset(){}}class Vi{constructor(e,t=new W(0,1,0)){this.orbitSpeed=e,this.axis=t,this.type="OrbitOverLife",this.temp=new W,this.rotation=new re}initialize(e){this.orbitSpeed.startGen(e.memory)}update(e,t){this.temp.copy(e.position).projectOnVector(this.axis),this.rotation.setFromAxisAngle(this.axis,this.orbitSpeed.genValue(e.memory,e.age/e.life)*t),e.position.sub(this.temp),e.position.applyQuaternion(this.rotation),e.position.add(this.temp)}frameUpdate(e){}toJSON(){return{type:this.type,orbitSpeed:this.orbitSpeed.toJSON(),axis:[this.axis.x,this.axis.y,this.axis.z]}}static fromJSON(e){return new Vi($(e.orbitSpeed),e.axis?new W(e.axis[0],e.axis[1],e.axis[2]):void 0)}clone(){return new Vi(this.orbitSpeed.clone())}reset(){}}class Ws{constructor(e){this.data=e,this.next=null,this.prev=null}hasPrev(){return this.prev!==null}hasNext(){return this.next!==null}}class Rh{constructor(){this.length=0,this.head=this.tail=null}isEmpty(){return this.head===null}clear(){this.length=0,this.head=this.tail=null}front(){return this.head===null?null:this.head.data}back(){return this.tail===null?null:this.tail.data}dequeue(){if(this.head){const e=this.head.data;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}}pop(){if(this.tail){const e=this.tail.data;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}}queue(e){const t=new Ws(e);this.tail||(this.tail=t),this.head&&(this.head.prev=t,t.next=this.head),this.head=t,this.length++}push(e){const t=new Ws(e);this.head||(this.head=t),this.tail&&(this.tail.next=t,t.prev=this.tail),this.tail=t,this.length++}insertBefore(e,t){const n=new Ws(t);n.next=e,n.prev=e.prev,n.prev!==null&&(n.prev.next=n),n.next.prev=n,e==this.head&&(this.head=n),this.length++}remove(e){if(this.head===null||this.tail===null)return;let t=this.head;for(e===this.head.data&&(this.head=this.head.next),e===this.tail.data&&(this.tail=this.tail.prev);t.next!==null&&t.data!==e;)t=t.next;t.data===e&&(t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.length--)}*values(){let e=this.head;for(;e!==null;)yield e.data,e=e.next}}class Ah{constructor(){this.startSpeed=0,this.startColor=new nt,this.startSize=new W(1,1,1),this.position=new W,this.velocity=new W,this.age=0,this.life=1,this.size=new W(1,1,1),this.speedModifier=1,this.rotation=0,this.color=new nt,this.uvTile=0,this.memory=[]}get died(){return this.age>=this.life}reset(){this.memory.length=0}}class Oh{constructor(e,t,n){this.position=e,this.size=t,this.color=n}}class Cr{constructor(){this.startSpeed=0,this.startColor=new nt,this.startSize=new W(1,1,1),this.position=new W,this.velocity=new W,this.age=0,this.life=1,this.size=new W(1,1,1),this.length=100,this.speedModifier=1,this.color=new nt,this.previous=new Rh,this.uvTile=0,this.memory=[]}update(){for(this.age<=this.life?this.previous.push(new Oh(this.position.clone(),this.size.x,this.color.clone())):this.previous.length>0&&this.previous.dequeue();this.previous.length>this.length;)this.previous.dequeue()}get died(){return this.age>=this.life}reset(){this.memory.length=0,this.previous.clear()}}class ji{initialize(e){this.width.startGen(e.memory)}constructor(e){this.width=e,this.type="WidthOverLength"}update(e){if(e instanceof Cr){const t=e.previous.values();for(let n=0;n<e.previous.length;n++){const i=t.next();i.value.size=this.width.genValue(e.memory,(e.previous.length-n)/e.length)}}}frameUpdate(e){}toJSON(){return{type:this.type,width:this.width.toJSON()}}static fromJSON(e){return new ji($(e.width))}clone(){return new ji(this.width.clone())}reset(){}}class Ji{constructor(e,t){this.direction=e,this.magnitude=t,this.type="ApplyForce",this.memory={data:[],dataCount:0},this.magnitudeValue=this.magnitude.genValue(this.memory)}initialize(e){}update(e,t){e.velocity.addScaledVector(this.direction,this.magnitudeValue*t)}frameUpdate(e){this.magnitudeValue=this.magnitude.genValue(this.memory)}toJSON(){return{type:this.type,direction:[this.direction.x,this.direction.y,this.direction.z],magnitude:this.magnitude.toJSON()}}static fromJSON(e){var t;return new Ji(new W(e.direction[0],e.direction[1],e.direction[2]),$((t=e.magnitude)!==null&&t!==void 0?t:e.force))}clone(){return new Ji(this.direction.clone(),this.magnitude.clone())}reset(){}}class Gi{constructor(e,t){this.center=e,this.magnitude=t,this.type="GravityForce",this.temp=new W}initialize(e){}update(e,t){this.temp.copy(this.center).sub(e.position).normalize(),e.velocity.addScaledVector(this.temp,this.magnitude/e.position.distanceToSquared(this.center)*t)}frameUpdate(e){}toJSON(){return{type:this.type,center:[this.center.x,this.center.y,this.center.z],magnitude:this.magnitude}}static fromJSON(e){return new Gi(new W(e.center[0],e.center[1],e.center[2]),e.magnitude)}clone(){return new Gi(this.center.clone(),this.magnitude)}reset(){}}class Wi{constructor(e){this.angle=e,this.type="ChangeEmitDirection",this._temp=new W,this._q=new re,this.memory={data:[],dataCount:0}}initialize(e){const t=e.velocity.length();t!=0&&(e.velocity.normalize(),e.velocity.x===0&&e.velocity.y===0?this._temp.set(0,e.velocity.z,0):this._temp.set(-e.velocity.y,e.velocity.x,0),this.angle.startGen(this.memory),this._q.setFromAxisAngle(this._temp.normalize(),this.angle.genValue(this.memory)),this._temp.copy(e.velocity),e.velocity.applyQuaternion(this._q),this._q.setFromAxisAngle(this._temp,Math.random()*Math.PI*2),e.velocity.applyQuaternion(this._q),e.velocity.setLength(t))}update(e,t){}frameUpdate(e){}toJSON(){return{type:this.type,angle:this.angle.toJSON()}}static fromJSON(e){return new Wi($(e.angle))}clone(){return new Wi(this.angle)}reset(){}}var Nn;(function(r){r[r.Death=0]="Death",r[r.Birth=1]="Birth",r[r.Frame=2]="Frame"})(Nn||(Nn={}));class Hi{constructor(e,t,n,i=Nn.Frame,s=1){this.particleSystem=e,this.useVelocityAsBasis=t,this.subParticleSystem=n,this.mode=i,this.emitProbability=s,this.type="EmitSubParticleSystem",this.q_=new re,this.v_=new W,this.v2_=new W,this.subEmissions=new Array,this.subParticleSystem&&this.subParticleSystem.system&&(this.subParticleSystem.system.onlyUsedByOther=!0)}initialize(e){}update(e,t){this.mode===Nn.Frame?this.emit(e,t):this.mode===Nn.Birth&&e.age===0?this.emit(e,t):this.mode===Nn.Death&&e.age+t>=e.life&&this.emit(e,t)}emit(e,t){if(!this.subParticleSystem||Math.random()>this.emitProbability)return;const n=new At;this.setMatrixFromParticle(n,e),this.subEmissions.push({burstParticleCount:0,burstParticleIndex:0,isBursting:!1,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,matrix:n,travelDistance:0,particle:e})}frameUpdate(e){if(this.subParticleSystem)for(let t=0;t<this.subEmissions.length;t++)if(this.subEmissions[t].time>=this.subParticleSystem.system.duration)this.subEmissions[t]=this.subEmissions[this.subEmissions.length-1],this.subEmissions.length=this.subEmissions.length-1,t--;else{const n=this.subEmissions[t];n.particle&&n.particle.age<n.particle.life?this.setMatrixFromParticle(n.matrix,n.particle):n.particle=void 0,this.subParticleSystem.system.emit(e,n,n.matrix)}}toJSON(){return{type:this.type,subParticleSystem:this.subParticleSystem?this.subParticleSystem.uuid:"",useVelocityAsBasis:this.useVelocityAsBasis,mode:this.mode,emitProbability:this.emitProbability}}static fromJSON(e,t){return new Hi(t,e.useVelocityAsBasis,e.subParticleSystem,e.mode,e.emitProbability)}clone(){return new Hi(this.particleSystem,this.useVelocityAsBasis,this.subParticleSystem,this.mode,this.emitProbability)}reset(){}setMatrixFromParticle(e,t){let n;if(t.rotation===void 0||this.useVelocityAsBasis)if(t.velocity.x===0&&t.velocity.y===0&&(t.velocity.z===1||t.velocity.z===0))e.set(1,0,0,t.position.x,0,1,0,t.position.y,0,0,1,t.position.z,0,0,0,1);else{this.v_.copy(Fc).cross(t.velocity),this.v2_.copy(t.velocity).cross(this.v_);const i=this.v_.length(),s=this.v2_.length();e.set(this.v_.x/i,this.v2_.x/s,t.velocity.x,t.position.x,this.v_.y/i,this.v2_.y/s,t.velocity.y,t.position.y,this.v_.z/i,this.v2_.z/s,t.velocity.z,t.position.z,0,0,0,1)}else t.rotation instanceof re?n=t.rotation:(this.q_.setFromAxisAngle(Fc,t.rotation),n=this.q_),e.compose(t.position,n,Ph);this.particleSystem.worldSpace||e.multiplyMatrices(this.particleSystem.emitter.matrixWorld,e)}}const Ih=.5*(Math.sqrt(3)-1),li=(3-Math.sqrt(3))/6,zh=1/3,Ut=1/6,Bh=(Math.sqrt(5)-1)/4,Ue=(5-Math.sqrt(5))/20,Oe=new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]),Te=new Float32Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);class Vc{constructor(e=Math.random){const t=typeof e=="function"?e:Uh(e);this.p=Nh(t),this.perm=new Uint8Array(512),this.permMod12=new Uint8Array(512);for(let n=0;n<512;n++)this.perm[n]=this.p[n&255],this.permMod12[n]=this.perm[n]%12}noise2D(e,t){const n=this.permMod12,i=this.perm;let s=0,a=0,o=0;const c=(e+t)*Ih,l=Math.floor(e+c),u=Math.floor(t+c),p=(l+u)*li,m=l-p,f=u-p,x=e-m,w=t-f;let g,v;x>w?(g=1,v=0):(g=0,v=1);const _=x-g+li,S=w-v+li,M=x-1+2*li,T=w-1+2*li,E=l&255,P=u&255;let z=.5-x*x-w*w;if(z>=0){const B=n[E+i[P]]*3;z*=z,s=z*z*(Oe[B]*x+Oe[B+1]*w)}let R=.5-_*_-S*S;if(R>=0){const B=n[E+g+i[P+v]]*3;R*=R,a=R*R*(Oe[B]*_+Oe[B+1]*S)}let A=.5-M*M-T*T;if(A>=0){const B=n[E+1+i[P+1]]*3;A*=A,o=A*A*(Oe[B]*M+Oe[B+1]*T)}return 70*(s+a+o)}noise3D(e,t,n){const i=this.permMod12,s=this.perm;let a,o,c,l;const u=(e+t+n)*zh,p=Math.floor(e+u),m=Math.floor(t+u),f=Math.floor(n+u),x=(p+m+f)*Ut,w=p-x,g=m-x,v=f-x,_=e-w,S=t-g,M=n-v;let T,E,P,z,R,A;_>=S?S>=M?(T=1,E=0,P=0,z=1,R=1,A=0):_>=M?(T=1,E=0,P=0,z=1,R=0,A=1):(T=0,E=0,P=1,z=1,R=0,A=1):S<M?(T=0,E=0,P=1,z=0,R=1,A=1):_<M?(T=0,E=1,P=0,z=0,R=1,A=1):(T=0,E=1,P=0,z=1,R=1,A=0);const B=_-T+Ut,O=S-E+Ut,U=M-P+Ut,L=_-z+2*Ut,G=S-R+2*Ut,H=M-A+2*Ut,Q=_-1+3*Ut,j=S-1+3*Ut,pe=M-1+3*Ut,ie=p&255,he=m&255,oe=f&255;let le=.6-_*_-S*S-M*M;if(le<0)a=0;else{const se=i[ie+s[he+s[oe]]]*3;le*=le,a=le*le*(Oe[se]*_+Oe[se+1]*S+Oe[se+2]*M)}let xe=.6-B*B-O*O-U*U;if(xe<0)o=0;else{const se=i[ie+T+s[he+E+s[oe+P]]]*3;xe*=xe,o=xe*xe*(Oe[se]*B+Oe[se+1]*O+Oe[se+2]*U)}let ge=.6-L*L-G*G-H*H;if(ge<0)c=0;else{const se=i[ie+z+s[he+R+s[oe+A]]]*3;ge*=ge,c=ge*ge*(Oe[se]*L+Oe[se+1]*G+Oe[se+2]*H)}let de=.6-Q*Q-j*j-pe*pe;if(de<0)l=0;else{const se=i[ie+1+s[he+1+s[oe+1]]]*3;de*=de,l=de*de*(Oe[se]*Q+Oe[se+1]*j+Oe[se+2]*pe)}return 32*(a+o+c+l)}noise4D(e,t,n,i){const s=this.perm;let a,o,c,l,u;const p=(e+t+n+i)*Bh,m=Math.floor(e+p),f=Math.floor(t+p),x=Math.floor(n+p),w=Math.floor(i+p),g=(m+f+x+w)*Ue,v=m-g,_=f-g,S=x-g,M=w-g,T=e-v,E=t-_,P=n-S,z=i-M;let R=0,A=0,B=0,O=0;T>E?R++:A++,T>P?R++:B++,T>z?R++:O++,E>P?A++:B++,E>z?A++:O++,P>z?B++:O++;const U=R>=3?1:0,L=A>=3?1:0,G=B>=3?1:0,H=O>=3?1:0,Q=R>=2?1:0,j=A>=2?1:0,pe=B>=2?1:0,ie=O>=2?1:0,he=R>=1?1:0,oe=A>=1?1:0,le=B>=1?1:0,xe=O>=1?1:0,ge=T-U+Ue,de=E-L+Ue,se=P-G+Ue,Ge=z-H+Ue,Ie=T-Q+2*Ue,Ee=E-j+2*Ue,it=P-pe+2*Ue,ze=z-ie+2*Ue,ve=T-he+3*Ue,ue=E-oe+3*Ue,lt=P-le+3*Ue,Pe=z-xe+3*Ue,fe=T-1+4*Ue,Ke=E-1+4*Ue,bt=P-1+4*Ue,xt=z-1+4*Ue,Qe=m&255,wt=f&255,ut=x&255,ht=w&255;let rt=.6-T*T-E*E-P*P-z*z;if(rt<0)a=0;else{const ee=s[Qe+s[wt+s[ut+s[ht]]]]%32*4;rt*=rt,a=rt*rt*(Te[ee]*T+Te[ee+1]*E+Te[ee+2]*P+Te[ee+3]*z)}let ke=.6-ge*ge-de*de-se*se-Ge*Ge;if(ke<0)o=0;else{const ee=s[Qe+U+s[wt+L+s[ut+G+s[ht+H]]]]%32*4;ke*=ke,o=ke*ke*(Te[ee]*ge+Te[ee+1]*de+Te[ee+2]*se+Te[ee+3]*Ge)}let We=.6-Ie*Ie-Ee*Ee-it*it-ze*ze;if(We<0)c=0;else{const ee=s[Qe+Q+s[wt+j+s[ut+pe+s[ht+ie]]]]%32*4;We*=We,c=We*We*(Te[ee]*Ie+Te[ee+1]*Ee+Te[ee+2]*it+Te[ee+3]*ze)}let st=.6-ve*ve-ue*ue-lt*lt-Pe*Pe;if(st<0)l=0;else{const ee=s[Qe+he+s[wt+oe+s[ut+le+s[ht+xe]]]]%32*4;st*=st,l=st*st*(Te[ee]*ve+Te[ee+1]*ue+Te[ee+2]*lt+Te[ee+3]*Pe)}let He=.6-fe*fe-Ke*Ke-bt*bt-xt*xt;if(He<0)u=0;else{const ee=s[Qe+1+s[wt+1+s[ut+1+s[ht+1]]]]%32*4;He*=He,u=He*He*(Te[ee]*fe+Te[ee+1]*Ke+Te[ee+2]*bt+Te[ee+3]*xt)}return 27*(a+o+c+l+u)}}function Nh(r){const e=new Uint8Array(256);for(let t=0;t<256;t++)e[t]=t;for(let t=0;t<255;t++){const n=t+~~(r()*(256-t)),i=e[t];e[t]=e[n],e[n]=i}return e}function Uh(r){let e=0,t=0,n=0,i=1;const s=Dh();return e=s(" "),t=s(" "),n=s(" "),e-=s(r),e<0&&(e+=1),t-=s(r),t<0&&(t+=1),n-=s(r),n<0&&(n+=1),function(){const a=2091639*e+i*23283064365386963e-26;return e=t,t=n,n=a-(i=a|0)}}function Dh(){let r=4022871197;return function(e){e=e.toString();for(let t=0;t<e.length;t++){r+=e.charCodeAt(t);let n=.02519603282416938*r;r=n>>>0,n-=r,n*=r,r=n>>>0,n-=r,r+=n*4294967296}return(r>>>0)*23283064365386963e-26}}class qi{constructor(e,t,n,i){this.scale=e,this.octaves=t,this.velocityMultiplier=n,this.timeScale=i,this.type="TurbulenceField",this.generator=new Vc,this.timeOffset=new W,this.temp=new W,this.temp2=new W,this.timeOffset.x=Math.random()/this.scale.x*this.timeScale.x,this.timeOffset.y=Math.random()/this.scale.y*this.timeScale.y,this.timeOffset.z=Math.random()/this.scale.z*this.timeScale.z}initialize(e){}update(e,t){const n=e.position.x/this.scale.x,i=e.position.y/this.scale.y,s=e.position.z/this.scale.z;this.temp.set(0,0,0);let a=1;for(let o=0;o<this.octaves;o++)this.temp2.set(this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.x*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.y*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.z*a)/a),this.temp.add(this.temp2),a*=2;this.temp.multiply(this.velocityMultiplier),e.velocity.addScaledVector(this.temp,t)}toJSON(){return{type:this.type,scale:[this.scale.x,this.scale.y,this.scale.z],octaves:this.octaves,velocityMultiplier:[this.velocityMultiplier.x,this.velocityMultiplier.y,this.velocityMultiplier.z],timeScale:[this.timeScale.x,this.timeScale.y,this.timeScale.z]}}frameUpdate(e){this.timeOffset.x+=e*this.timeScale.x,this.timeOffset.y+=e*this.timeScale.y,this.timeOffset.z+=e*this.timeScale.z}static fromJSON(e){return new qi(new W(e.scale[0],e.scale[1],e.scale[2]),e.octaves,new W(e.velocityMultiplier[0],e.velocityMultiplier[1],e.velocityMultiplier[2]),new W(e.timeScale[0],e.timeScale[1],e.timeScale[2]))}clone(){return new qi(this.scale.clone(),this.octaves,this.velocityMultiplier.clone(),this.timeScale.clone())}reset(){}}const Dt=[],Hs=new W,qs=new re;class Xi{constructor(e,t,n=new ne(1),i=new ne(0)){if(this.frequency=e,this.power=t,this.positionAmount=n,this.rotationAmount=i,this.type="Noise",this.duration=0,Dt.length===0)for(let s=0;s<100;s++)Dt.push(new Vc)}initialize(e){e.lastPosNoise=new W,typeof e.rotation=="number"?e.lastRotNoise=0:e.lastRotNoise=new re,e.generatorIndex=[_r(0,100),_r(0,100),_r(0,100),_r(0,100)],this.positionAmount.startGen(e.memory),this.rotationAmount.startGen(e.memory),this.frequency.startGen(e.memory),this.power.startGen(e.memory)}update(e,t){let n=this.frequency.genValue(e.memory,e.age/e.life),i=this.power.genValue(e.memory,e.age/e.life),s=this.positionAmount.genValue(e.memory,e.age/e.life),a=this.rotationAmount.genValue(e.memory,e.age/e.life);s>0&&e.lastPosNoise!==void 0&&(e.position.sub(e.lastPosNoise),Hs.set(Dt[e.generatorIndex[0]].noise2D(0,e.age*n)*i*s,Dt[e.generatorIndex[1]].noise2D(0,e.age*n)*i*s,Dt[e.generatorIndex[2]].noise2D(0,e.age*n)*i*s),e.position.add(Hs),e.lastPosNoise.copy(Hs)),a>0&&e.lastRotNoise!==void 0&&(typeof e.rotation=="number"?(e.rotation-=e.lastRotNoise,e.rotation+=Dt[e.generatorIndex[3]].noise2D(0,e.age*n)*Math.PI*i*a):(e.lastRotNoise.invert(),e.rotation.multiply(e.lastRotNoise),qs.set(Dt[e.generatorIndex[0]].noise2D(0,e.age*n)*i*a,Dt[e.generatorIndex[1]].noise2D(0,e.age*n)*i*a,Dt[e.generatorIndex[2]].noise2D(0,e.age*n)*i*a,Dt[e.generatorIndex[3]].noise2D(0,e.age*n)*i*a).normalize(),e.rotation.multiply(qs),e.lastRotNoise.copy(qs)))}toJSON(){return{type:this.type,frequency:this.frequency.toJSON(),power:this.power.toJSON(),positionAmount:this.positionAmount.toJSON(),rotationAmount:this.rotationAmount.toJSON()}}frameUpdate(e){this.duration+=e}static fromJSON(e){return new Xi($(e.frequency),$(e.power),$(e.positionAmount),$(e.rotationAmount))}clone(){return new Xi(this.frequency.clone(),this.power.clone(),this.positionAmount.clone(),this.rotationAmount.clone())}reset(){}}class Yi{constructor(e,t){this.color=e,this.speedRange=t,this.type="ColorBySpeed"}initialize(e){this.color.startGen(e.memory)}update(e,t){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.color.genColor(e.memory,e.color,n),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Yi(Js(e.color),Cn.fromJSON(e.speedRange))}clone(){return new Yi(this.color.clone(),this.speedRange.clone())}reset(){}}class Zi{initialize(e){this.size.startGen(e.memory)}constructor(e,t){this.size=e,this.speedRange=t,this.type="SizeBySpeed"}update(e){const t=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.size instanceof En?this.size.genValue(e.memory,e.size,t).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,t))}toJSON(){return{type:this.type,size:this.size.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Zi(wr(e.size),Cn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Zi(this.size.clone(),this.speedRange.clone())}reset(){}}class Ki{constructor(e,t){this.angularVelocity=e,this.speedRange=t,this.type="RotationBySpeed",this.tempQuat=new re}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){if(typeof e.rotation=="number"){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);e.rotation+=t*this.angularVelocity.genValue(e.memory,n)}}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Ki($(e.angularVelocity),Cn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Ki(this.angularVelocity.clone(),this.speedRange.clone())}reset(){}}class Qi{initialize(e){this.speed.startGen(e.memory)}constructor(e,t){this.speed=e,this.dampen=t,this.type="LimitSpeedOverLife"}update(e,t){let n=e.velocity.length(),i=this.speed.genValue(e.memory,e.age/e.life);if(n>i){const s=(n-i)/n;e.velocity.multiplyScalar(1-s*this.dampen*t*20)}}toJSON(){return{type:this.type,speed:this.speed.toJSON(),dampen:this.dampen}}static fromJSON(e){return new Qi($(e.speed),e.dampen)}frameUpdate(e){}clone(){return new Qi(this.speed.clone(),this.dampen)}reset(){}}const Er={ApplyForce:{type:"ApplyForce",constructor:Ji,params:[["direction",["vec3"]],["magnitude",["value"]]],loadJSON:Ji.fromJSON},Noise:{type:"Noise",constructor:Xi,params:[["frequency",["value"]],["power",["value"]],["positionAmount",["value"]],["rotationAmount",["value"]]],loadJSON:Xi.fromJSON},TurbulenceField:{type:"TurbulenceField",constructor:qi,params:[["scale",["vec3"]],["octaves",["number"]],["velocityMultiplier",["vec3"]],["timeScale",["vec3"]]],loadJSON:qi.fromJSON},GravityForce:{type:"GravityForce",constructor:Gi,params:[["center",["vec3"]],["magnitude",["number"]]],loadJSON:Gi.fromJSON},ColorOverLife:{type:"ColorOverLife",constructor:zi,params:[["color",["colorFunc"]]],loadJSON:zi.fromJSON},RotationOverLife:{type:"RotationOverLife",constructor:Bi,params:[["angularVelocity",["value","valueFunc"]]],loadJSON:Bi.fromJSON},Rotation3DOverLife:{type:"Rotation3DOverLife",constructor:Ni,params:[["angularVelocity",["rotationFunc"]]],loadJSON:Ni.fromJSON},SizeOverLife:{type:"SizeOverLife",constructor:Di,params:[["size",["value","valueFunc","vec3Func"]]],loadJSON:Di.fromJSON},ColorBySpeed:{type:"ColorBySpeed",constructor:Yi,params:[["color",["colorFunc"]],["speedRange",["range"]]],loadJSON:Yi.fromJSON},RotationBySpeed:{type:"RotationBySpeed",constructor:Ki,params:[["angularVelocity",["value","valueFunc"]],["speedRange",["range"]]],loadJSON:Ki.fromJSON},SizeBySpeed:{type:"SizeBySpeed",constructor:Zi,params:[["size",["value","valueFunc","vec3Func"]],["speedRange",["range"]]],loadJSON:Zi.fromJSON},SpeedOverLife:{type:"SpeedOverLife",constructor:Li,params:[["speed",["value","valueFunc"]]],loadJSON:Li.fromJSON},FrameOverLife:{type:"FrameOverLife",constructor:Fi,params:[["frame",["value","valueFunc"]]],loadJSON:Fi.fromJSON},ForceOverLife:{type:"ForceOverLife",constructor:Ui,params:[["x",["value","valueFunc"]],["y",["value","valueFunc"]],["z",["value","valueFunc"]]],loadJSON:Ui.fromJSON},OrbitOverLife:{type:"OrbitOverLife",constructor:Vi,params:[["orbitSpeed",["value","valueFunc"]],["axis",["vec3"]]],loadJSON:Vi.fromJSON},WidthOverLength:{type:"WidthOverLength",constructor:ji,params:[["width",["value","valueFunc"]]],loadJSON:ji.fromJSON},ChangeEmitDirection:{type:"ChangeEmitDirection",constructor:Wi,params:[["angle",["value"]]],loadJSON:Wi.fromJSON},EmitSubParticleSystem:{type:"EmitSubParticleSystem",constructor:Hi,params:[["particleSystem",["self"]],["useVelocityAsBasis",["boolean"]],["subParticleSystem",["particleSystem"]],["mode",["number"]],["emitProbability",["number"]]],loadJSON:Hi.fromJSON},LimitSpeedOverLife:{type:"LimitSpeedOverLife",constructor:Qi,params:[["speed",["value","valueFunc"]],["dampen",["number"]]],loadJSON:Qi.fromJSON}};function Lh(r,e){return Er[r.type]?Er[r.type].loadJSON(r,e):null}const Fh=[];function Vh(r){if(!Fh.find(e=>e.id===r.id)){for(const e of r.emitterShapes)Gs[e.type]||(Gs[e.type]=e);for(const e of r.behaviors)Er[e.type]||(Er[e.type]=e)}}var jh=`
78
+ isUnifiedPlanSupported:`).concat(this.isUnifiedPlanSupported())},r}()),oc={iceServers:[{urls:"stun:stun.l.google.com:19302"},{urls:["turn:eu-0.turn.peerjs.com:3478","turn:us-0.turn.peerjs.com:3478"],username:"peerjs",credential:"peerjsp"}],sdpSemantics:"unified-plan"},Cu=function(){function r(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=oc,this.browser=ti.getBrowser(),this.browserVersion=ti.getVersion(),this.supports=function(){var e={browser:ti.isBrowserSupported(),webRTC:ti.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!e.webRTC)return e;var t;try{t=new RTCPeerConnection(oc),e.audioVideo=!0;var n=void 0;try{n=t.createDataChannel("_PEERJSTEST",{ordered:!0}),e.data=!0,e.reliable=!!n.ordered;try{n.binaryType="blob",e.binaryBlob=!ti.isIOS}catch{}}catch{}finally{n&&n.close()}}catch{}finally{t&&t.close()}return e}(),this.pack=pa.pack,this.unpack=pa.unpack,this._dataCount=1}return r.prototype.noop=function(){},r.prototype.validateId=function(e){return!e||/^[A-Za-z0-9]+(?:[ _-][A-Za-z0-9]+)*$/.test(e)},r.prototype.chunk=function(e){for(var t=[],n=e.size,i=Math.ceil(n/te.chunkedMTU),s=0,a=0;a<n;){var o=Math.min(n,a+te.chunkedMTU),c=e.slice(a,o),l={__peerData:this._dataCount,n:s,data:c,total:i};t.push(l),a=o,s++}return this._dataCount++,t},r.prototype.blobToArrayBuffer=function(e,t){var n=new FileReader;return n.onload=function(i){i.target&&t(i.target.result)},n.readAsArrayBuffer(e),n},r.prototype.binaryStringToArrayBuffer=function(e){for(var t=new Uint8Array(e.length),n=0;n<e.length;n++)t[n]=e.charCodeAt(n)&255;return t.buffer},r.prototype.randomToken=function(){return Math.random().toString(36).slice(2)},r.prototype.isSecure=function(){return location.protocol==="https:"},r}(),te=new Cu,ac={};Bt(ac,"Peer",()=>Ns,r=>Ns=r);var ni={},Eu=Object.prototype.hasOwnProperty,Ye="~";function ii(){}Object.create&&(ii.prototype=Object.create(null),new ii().__proto__||(Ye=!1));function Pu(r,e,t){this.fn=r,this.context=e,this.once=t||!1}function cc(r,e,t,n,i){if(typeof t!="function")throw new TypeError("The listener must be a function");var s=new Pu(t,n||r,i),a=Ye?Ye+e:e;return r._events[a]?r._events[a].fn?r._events[a]=[r._events[a],s]:r._events[a].push(s):(r._events[a]=s,r._eventsCount++),r}function fr(r,e){--r._eventsCount===0?r._events=new ii:delete r._events[e]}function Ve(){this._events=new ii,this._eventsCount=0}Ve.prototype.eventNames=function(){var r=[],e,t;if(this._eventsCount===0)return r;for(t in e=this._events)Eu.call(e,t)&&r.push(Ye?t.slice(1):t);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},Ve.prototype.listeners=function(r){var e=Ye?Ye+r:r,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var n=0,i=t.length,s=new Array(i);n<i;n++)s[n]=t[n].fn;return s},Ve.prototype.listenerCount=function(r){var e=Ye?Ye+r:r,t=this._events[e];return t?t.fn?1:t.length:0},Ve.prototype.emit=function(r,e,t,n,i,s){var a=Ye?Ye+r:r;if(!this._events[a])return!1;var o=this._events[a],c=arguments.length,l,u;if(o.fn){switch(o.once&&this.removeListener(r,o.fn,void 0,!0),c){case 1:return o.fn.call(o.context),!0;case 2:return o.fn.call(o.context,e),!0;case 3:return o.fn.call(o.context,e,t),!0;case 4:return o.fn.call(o.context,e,t,n),!0;case 5:return o.fn.call(o.context,e,t,n,i),!0;case 6:return o.fn.call(o.context,e,t,n,i,s),!0}for(u=1,l=new Array(c-1);u<c;u++)l[u-1]=arguments[u];o.fn.apply(o.context,l)}else{var p=o.length,m;for(u=0;u<p;u++)switch(o[u].once&&this.removeListener(r,o[u].fn,void 0,!0),c){case 1:o[u].fn.call(o[u].context);break;case 2:o[u].fn.call(o[u].context,e);break;case 3:o[u].fn.call(o[u].context,e,t);break;case 4:o[u].fn.call(o[u].context,e,t,n);break;default:if(!l)for(m=1,l=new Array(c-1);m<c;m++)l[m-1]=arguments[m];o[u].fn.apply(o[u].context,l)}}return!0},Ve.prototype.on=function(r,e,t){return cc(this,r,e,t,!1)},Ve.prototype.once=function(r,e,t){return cc(this,r,e,t,!0)},Ve.prototype.removeListener=function(r,e,t,n){var i=Ye?Ye+r:r;if(!this._events[i])return this;if(!e)return fr(this,i),this;var s=this._events[i];if(s.fn)s.fn===e&&(!n||s.once)&&(!t||s.context===t)&&fr(this,i);else{for(var a=0,o=[],c=s.length;a<c;a++)(s[a].fn!==e||n&&!s[a].once||t&&s[a].context!==t)&&o.push(s[a]);o.length?this._events[i]=o.length===1?o[0]:o:fr(this,i)}return this},Ve.prototype.removeAllListeners=function(r){var e;return r?(e=Ye?Ye+r:r,this._events[e]&&fr(this,e)):(this._events=new ii,this._eventsCount=0),this},Ve.prototype.off=Ve.prototype.removeListener,Ve.prototype.addListener=Ve.prototype.on,Ve.prefixed=Ye,Ve.EventEmitter=Ve,ni=Ve;var G={};Bt(G,"LogLevel",()=>et,r=>et=r),Bt(G,"default",()=>lc,r=>lc=r);var fn=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},mn=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},ku="PeerJS: ",et;(function(r){r[r.Disabled=0]="Disabled",r[r.Errors=1]="Errors",r[r.Warnings=2]="Warnings",r[r.All=3]="All"})(et||(et={}));var Ru=function(){function r(){this._logLevel=et.Disabled}return Object.defineProperty(r.prototype,"logLevel",{get:function(){return this._logLevel},set:function(e){this._logLevel=e},enumerable:!1,configurable:!0}),r.prototype.log=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=et.All&&this._print.apply(this,mn([et.All],fn(e),!1))},r.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=et.Warnings&&this._print.apply(this,mn([et.Warnings],fn(e),!1))},r.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=et.Errors&&this._print.apply(this,mn([et.Errors],fn(e),!1))},r.prototype.setLogFunction=function(e){this._print=e},r.prototype._print=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];var i=mn([ku],fn(t),!1);for(var s in i)i[s]instanceof Error&&(i[s]="("+i[s].name+") "+i[s].message);e>=et.All?console.log.apply(console,mn([],fn(i),!1)):e>=et.Warnings?console.warn.apply(console,mn(["WARNING"],fn(i),!1)):e>=et.Errors&&console.error.apply(console,mn(["ERROR"],fn(i),!1))},r}(),lc=new Ru,uc={};Bt(uc,"Socket",()=>hc,r=>hc=r);var Pt;(function(r){r.Data="data",r.Media="media"})(Pt||(Pt={}));var we;(function(r){r.BrowserIncompatible="browser-incompatible",r.Disconnected="disconnected",r.InvalidID="invalid-id",r.InvalidKey="invalid-key",r.Network="network",r.PeerUnavailable="peer-unavailable",r.SslUnavailable="ssl-unavailable",r.ServerError="server-error",r.SocketError="socket-error",r.SocketClosed="socket-closed",r.UnavailableID="unavailable-id",r.WebRTC="webrtc"})(we||(we={}));var qt;(function(r){r.Binary="binary",r.BinaryUTF8="binary-utf8",r.JSON="json"})(qt||(qt={}));var Xt;(function(r){r.Message="message",r.Disconnected="disconnected",r.Error="error",r.Close="close"})(Xt||(Xt={}));var Be;(function(r){r.Heartbeat="HEARTBEAT",r.Candidate="CANDIDATE",r.Offer="OFFER",r.Answer="ANSWER",r.Open="OPEN",r.Error="ERROR",r.IdTaken="ID-TAKEN",r.InvalidKey="INVALID-KEY",r.Leave="LEAVE",r.Expire="EXPIRE"})(Be||(Be={}));var As={};As=JSON.parse('{"name":"peerjs","version":"1.4.7","keywords":["peerjs","webrtc","p2p","rtc"],"description":"PeerJS client","homepage":"https://peerjs.com","bugs":{"url":"https://github.com/peers/peerjs/issues"},"repository":{"type":"git","url":"https://github.com/peers/peerjs"},"license":"MIT","contributors":["Michelle Bu <michelle@michellebu.com>","afrokick <devbyru@gmail.com>","ericz <really.ez@gmail.com>","Jairo <kidandcat@gmail.com>","Jonas Gloning <34194370+jonasgloning@users.noreply.github.com>","Jairo Caro-Accino Viciana <jairo@galax.be>","Carlos Caballero <carlos.caballero.gonzalez@gmail.com>","hc <hheennrryy@gmail.com>","Muhammad Asif <capripio@gmail.com>","PrashoonB <prashoonbhattacharjee@gmail.com>","Harsh Bardhan Mishra <47351025+HarshCasper@users.noreply.github.com>","akotynski <aleksanderkotbury@gmail.com>","lmb <i@lmb.io>","Jairooo <jairocaro@msn.com>","Moritz St\xFCckler <moritz.stueckler@gmail.com>","Simon <crydotsnakegithub@gmail.com>","Denis Lukov <denismassters@gmail.com>","Philipp Hancke <fippo@andyet.net>","Hans Oksendahl <hansoksendahl@gmail.com>","Jess <jessachandler@gmail.com>","khankuan <khankuan@gmail.com>","DUODVK <kurmanov.work@gmail.com>","XiZhao <kwang1imsa@gmail.com>","Matthias Lohr <matthias@lohr.me>","=frank tree <=frnktrb@googlemail.com>","Andre Eckardt <aeckardt@outlook.com>","Chris Cowan <agentme49@gmail.com>","Alex Chuev <alex@chuev.com>","alxnull <alxnull@e.mail.de>","Yemel Jardi <angel.jardi@gmail.com>","Ben Parnell <benjaminparnell.94@gmail.com>","Benny Lichtner <bennlich@gmail.com>","fresheneesz <bitetrudpublic@gmail.com>","bob.barstead@exaptive.com <bob.barstead@exaptive.com>","chandika <chandika@gmail.com>","emersion <contact@emersion.fr>","Christopher Van <cvan@users.noreply.github.com>","eddieherm <edhermoso@gmail.com>","Eduardo Pinho <enet4mikeenet@gmail.com>","Evandro Zanatta <ezanatta@tray.net.br>","Gardner Bickford <gardner@users.noreply.github.com>","Gian Luca <gianluca.cecchi@cynny.com>","PatrickJS <github@gdi2290.com>","jonnyf <github@jonathanfoss.co.uk>","Hizkia Felix <hizkifw@gmail.com>","Hristo Oskov <hristo.oskov@gmail.com>","Isaac Madwed <i.madwed@gmail.com>","Ilya Konanykhin <ilya.konanykhin@gmail.com>","jasonbarry <jasbarry@me.com>","Jonathan Burke <jonathan.burke.1311@googlemail.com>","Josh Hamit <josh.hamit@gmail.com>","Jordan Austin <jrax86@gmail.com>","Joel Wetzell <jwetzell@yahoo.com>","xizhao <kevin.wang@cloudera.com>","Alberto Torres <kungfoobar@gmail.com>","Jonathan Mayol <mayoljonathan@gmail.com>","Jefferson Felix <me@jsfelix.dev>","Rolf Erik Lekang <me@rolflekang.com>","Kevin Mai-Husan Chia <mhchia@users.noreply.github.com>","Pepijn de Vos <pepijndevos@gmail.com>","JooYoung <qkdlql@naver.com>","Tobias Speicher <rootcommander@gmail.com>","Steve Blaurock <sblaurock@gmail.com>","Kyrylo Shegeda <shegeda@ualberta.ca>","Diwank Singh Tomer <singh@diwank.name>","So\u0308ren Balko <Soeren.Balko@gmail.com>","Arpit Solanki <solankiarpit1997@gmail.com>","Yuki Ito <yuki@gnnk.net>","Artur Zayats <zag2art@gmail.com>"],"funding":{"type":"opencollective","url":"https://opencollective.com/peer"},"collective":{"type":"opencollective","url":"https://opencollective.com/peer"},"files":["dist/*"],"sideEffects":["lib/global.ts","lib/supports.ts"],"main":"dist/bundler.cjs","module":"dist/bundler.mjs","browser-minified":"dist/peerjs.min.js","browser-unminified":"dist/peerjs.js","types":"dist/types.d.ts","engines":{"node":">= 10"},"targets":{"types":{"source":"lib/exports.ts"},"main":{"source":"lib/exports.ts","sourceMap":{"inlineSources":true}},"module":{"source":"lib/exports.ts","includeNodeModules":["eventemitter3"],"sourceMap":{"inlineSources":true}},"browser-minified":{"context":"browser","outputFormat":"global","optimize":true,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"},"browser-unminified":{"context":"browser","outputFormat":"global","optimize":false,"engines":{"browsers":"cover 99%, not dead"},"source":"lib/global.ts"}},"scripts":{"contributors":"git-authors-cli --print=false && prettier --write package.json && git add package.json package-lock.json && git commit -m \\"chore(contributors): update and sort contributors list\\"","check":"tsc --noEmit","watch":"parcel watch","build":"rm -rf dist && parcel build","prepublishOnly":"npm run build","test":"mocha -r ts-node/register -r jsdom-global/register test/**/*.ts","format":"prettier --write .","semantic-release":"semantic-release"},"devDependencies":{"@parcel/config-default":"^2.5.0","@parcel/packager-ts":"^2.5.0","@parcel/transformer-typescript-tsc":"^2.5.0","@parcel/transformer-typescript-types":"^2.5.0","@semantic-release/changelog":"^6.0.1","@semantic-release/git":"^10.0.1","@types/chai":"^4.3.0","@types/mocha":"^9.1.0","@types/node":"^17.0.18","chai":"^4.3.6","git-authors-cli":"^1.0.40","jsdom":"^19.0.0","jsdom-global":"^3.0.2","mocha":"^9.2.0","mock-socket":"8.0.5","parcel":"^2.5.0","parcel-transformer-tsc-sourcemaps":"^1.0.2","prettier":"^2.6.2","semantic-release":"^19.0.2","standard":"^16.0.4","ts-node":"^10.5.0","typescript":"^4.5.5"},"dependencies":{"@swc/helpers":"^0.3.13","eventemitter3":"^4.0.7","peerjs-js-binarypack":"1.0.1","webrtc-adapter":"^7.7.1"}}');var Au=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),Ou=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},Iu=function(r,e,t){if(t||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return r.concat(s||Array.prototype.slice.call(e))},zu=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},hc=function(r){Au(e,r);function e(t,n,i,s,a,o){o===void 0&&(o=5e3);var c=r.call(this)||this;c.pingInterval=o,c._disconnected=!0,c._messagesQueue=[];var l=t?"wss://":"ws://";return c._baseUrl=l+n+":"+i+s+"peerjs?key="+a,c}return e.prototype.start=function(t,n){var i=this;this._id=t;var s="".concat(this._baseUrl,"&id=").concat(t,"&token=").concat(n);this._socket||!this._disconnected||(this._socket=new WebSocket(s+"&version="+As.version),this._disconnected=!1,this._socket.onmessage=function(a){var o;try{o=JSON.parse(a.data),G.default.log("Server message received:",o)}catch{G.default.log("Invalid server message",a.data);return}i.emit(Xt.Message,o)},this._socket.onclose=function(a){i._disconnected||(G.default.log("Socket closed.",a),i._cleanup(),i._disconnected=!0,i.emit(Xt.Disconnected))},this._socket.onopen=function(){i._disconnected||(i._sendQueuedMessages(),G.default.log("Socket open"),i._scheduleHeartbeat())})},e.prototype._scheduleHeartbeat=function(){var t=this;this._wsPingTimer=setTimeout(function(){t._sendHeartbeat()},this.pingInterval)},e.prototype._sendHeartbeat=function(){if(!this._wsOpen()){G.default.log("Cannot send heartbeat, because socket closed");return}var t=JSON.stringify({type:Be.Heartbeat});this._socket.send(t),this._scheduleHeartbeat()},e.prototype._wsOpen=function(){return!!this._socket&&this._socket.readyState===1},e.prototype._sendQueuedMessages=function(){var t,n,i=Iu([],Ou(this._messagesQueue),!1);this._messagesQueue=[];try{for(var s=zu(i),a=s.next();!a.done;a=s.next()){var o=a.value;this.send(o)}}catch(c){t={error:c}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}},e.prototype.send=function(t){if(!this._disconnected){if(!this._id){this._messagesQueue.push(t);return}if(!t.type){this.emit(Xt.Error,"Invalid message");return}if(this._wsOpen()){var n=JSON.stringify(t);this._socket.send(n)}}},e.prototype.close=function(){this._disconnected||(this._cleanup(),this._disconnected=!0)},e.prototype._cleanup=function(){this._socket&&(this._socket.onopen=this._socket.onmessage=this._socket.onclose=null,this._socket.close(),this._socket=void 0),clearTimeout(this._wsPingTimer)},e}(ni.EventEmitter),Os={};Bt(Os,"MediaConnection",()=>fc,r=>fc=r);var Is={};Bt(Is,"Negotiator",()=>dc,r=>dc=r);var mr=function(){return mr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},mr.apply(this,arguments)},yr=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(u){try{l(n.next(u))}catch(p){a(p)}}function c(u){try{l(n.throw(u))}catch(p){a(p)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},gr=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(u){return c([l,u])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(u){l=[6,u],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},dc=function(){function r(e){this.connection=e}return r.prototype.startConnection=function(e){var t=this._startPeerConnection();if(this.connection.peerConnection=t,this.connection.type===Pt.Media&&e._stream&&this._addTracksToConnection(e._stream,t),e.originator){if(this.connection.type===Pt.Data){var n=this.connection,i={ordered:!!e.reliable},s=t.createDataChannel(n.label,i);n.initialize(s)}this._makeOffer()}else this.handleSDP("OFFER",e.sdp)},r.prototype._startPeerConnection=function(){G.default.log("Creating RTCPeerConnection.");var e=new RTCPeerConnection(this.connection.provider.options.config);return this._setupListeners(e),e},r.prototype._setupListeners=function(e){var t=this,n=this.connection.peer,i=this.connection.connectionId,s=this.connection.type,a=this.connection.provider;G.default.log("Listening for ICE candidates."),e.onicecandidate=function(o){!o.candidate||!o.candidate.candidate||(G.default.log("Received ICE candidates for ".concat(n,":"),o.candidate),a.socket.send({type:Be.Candidate,payload:{candidate:o.candidate,type:s,connectionId:i},dst:n}))},e.oniceconnectionstatechange=function(){switch(e.iceConnectionState){case"failed":G.default.log("iceConnectionState is failed, closing connections to "+n),t.connection.emit("error",new Error("Negotiation of connection to "+n+" failed.")),t.connection.close();break;case"closed":G.default.log("iceConnectionState is closed, closing connections to "+n),t.connection.emit("error",new Error("Connection to "+n+" closed.")),t.connection.close();break;case"disconnected":G.default.log("iceConnectionState changed to disconnected on the connection with "+n);break;case"completed":e.onicecandidate=te.noop;break}t.connection.emit("iceStateChanged",e.iceConnectionState)},G.default.log("Listening for data channel"),e.ondatachannel=function(o){G.default.log("Received data channel");var c=o.channel,l=a.getConnection(n,i);l.initialize(c)},G.default.log("Listening for remote stream"),e.ontrack=function(o){G.default.log("Received remote stream");var c=o.streams[0],l=a.getConnection(n,i);if(l.type===Pt.Media){var u=l;t._addStreamToMediaConnection(c,u)}}},r.prototype.cleanup=function(){G.default.log("Cleaning up PeerConnection to "+this.connection.peer);var e=this.connection.peerConnection;if(e){this.connection.peerConnection=null,e.onicecandidate=e.oniceconnectionstatechange=e.ondatachannel=e.ontrack=function(){};var t=e.signalingState!=="closed",n=!1;if(this.connection.type===Pt.Data){var i=this.connection,s=i.dataChannel;s&&(n=!!s.readyState&&s.readyState!=="closed")}(t||n)&&e.close()}},r.prototype._makeOffer=function(){return yr(this,void 0,Promise,function(){var e,t,n,i,s,a,o;return gr(this,function(c){switch(c.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,c.label=1;case 1:return c.trys.push([1,7,,8]),[4,e.createOffer(this.connection.options.constraints)];case 2:n=c.sent(),G.default.log("Created offer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),c.label=3;case 3:return c.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return c.sent(),G.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),i={sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,metadata:this.connection.metadata,browser:te.browser},this.connection.type===Pt.Data&&(s=this.connection,i=mr(mr({},i),{label:s.label,reliable:s.reliable,serialization:s.serialization})),t.socket.send({type:Be.Offer,payload:i,dst:this.connection.peer}),[3,6];case 5:return a=c.sent(),a!="OperationError: Failed to set local offer sdp: Called in wrong state: kHaveRemoteOffer"&&(t.emitError(we.WebRTC,a),G.default.log("Failed to setLocalDescription, ",a)),[3,6];case 6:return[3,8];case 7:return o=c.sent(),t.emitError(we.WebRTC,o),G.default.log("Failed to createOffer, ",o),[3,8];case 8:return[2]}})})},r.prototype._makeAnswer=function(){return yr(this,void 0,Promise,function(){var e,t,n,i,s;return gr(this,function(a){switch(a.label){case 0:e=this.connection.peerConnection,t=this.connection.provider,a.label=1;case 1:return a.trys.push([1,7,,8]),[4,e.createAnswer()];case 2:n=a.sent(),G.default.log("Created answer."),this.connection.options.sdpTransform&&typeof this.connection.options.sdpTransform=="function"&&(n.sdp=this.connection.options.sdpTransform(n.sdp)||n.sdp),a.label=3;case 3:return a.trys.push([3,5,,6]),[4,e.setLocalDescription(n)];case 4:return a.sent(),G.default.log("Set localDescription:",n,"for:".concat(this.connection.peer)),t.socket.send({type:Be.Answer,payload:{sdp:n,type:this.connection.type,connectionId:this.connection.connectionId,browser:te.browser},dst:this.connection.peer}),[3,6];case 5:return i=a.sent(),t.emitError(we.WebRTC,i),G.default.log("Failed to setLocalDescription, ",i),[3,6];case 6:return[3,8];case 7:return s=a.sent(),t.emitError(we.WebRTC,s),G.default.log("Failed to create answer, ",s),[3,8];case 8:return[2]}})})},r.prototype.handleSDP=function(e,t){return yr(this,void 0,Promise,function(){var n,i,s,a;return gr(this,function(o){switch(o.label){case 0:t=new RTCSessionDescription(t),n=this.connection.peerConnection,i=this.connection.provider,G.default.log("Setting remote description",t),s=this,o.label=1;case 1:return o.trys.push([1,5,,6]),[4,n.setRemoteDescription(t)];case 2:return o.sent(),G.default.log("Set remoteDescription:".concat(e," for:").concat(this.connection.peer)),e!=="OFFER"?[3,4]:[4,s._makeAnswer()];case 3:o.sent(),o.label=4;case 4:return[3,6];case 5:return a=o.sent(),i.emitError(we.WebRTC,a),G.default.log("Failed to setRemoteDescription, ",a),[3,6];case 6:return[2]}})})},r.prototype.handleCandidate=function(e){return yr(this,void 0,Promise,function(){var t,n,i,s,a,o;return gr(this,function(c){switch(c.label){case 0:G.default.log("handleCandidate:",e),t=e.candidate,n=e.sdpMLineIndex,i=e.sdpMid,s=this.connection.peerConnection,a=this.connection.provider,c.label=1;case 1:return c.trys.push([1,3,,4]),[4,s.addIceCandidate(new RTCIceCandidate({sdpMid:i,sdpMLineIndex:n,candidate:t}))];case 2:return c.sent(),G.default.log("Added ICE candidate for:".concat(this.connection.peer)),[3,4];case 3:return o=c.sent(),a.emitError(we.WebRTC,o),G.default.log("Failed to handleCandidate, ",o),[3,4];case 4:return[2]}})})},r.prototype._addTracksToConnection=function(e,t){if(G.default.log("add tracks from stream ".concat(e.id," to peer connection")),!t.addTrack)return G.default.error("Your browser does't support RTCPeerConnection#addTrack. Ignored.");e.getTracks().forEach(function(n){t.addTrack(n,e)})},r.prototype._addStreamToMediaConnection=function(e,t){G.default.log("add stream ".concat(e.id," to media connection ").concat(t.connectionId)),t.addStream(e)},r}(),zs={};Bt(zs,"BaseConnection",()=>pc,r=>pc=r);var Bu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),pc=function(r){Bu(e,r);function e(t,n,i){var s=r.call(this)||this;return s.peer=t,s.provider=n,s.options=i,s._open=!1,s.metadata=i.metadata,s}return Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),e}(ni.EventEmitter),Nu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),vr=function(){return vr=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},vr.apply(this,arguments)},Uu=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},fc=function(r){Nu(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s._localStream=s.options._stream,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s._negotiator=new Is.Negotiator(s),s._localStream&&s._negotiator.startConnection({_stream:s._localStream,originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Pt.Media},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"localStream",{get:function(){return this._localStream},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"remoteStream",{get:function(){return this._remoteStream},enumerable:!1,configurable:!0}),e.prototype.addStream=function(t){G.default.log("Receiving stream",t),this._remoteStream=t,r.prototype.emit.call(this,"stream",t)},e.prototype.handleMessage=function(t){var n=t.type,i=t.payload;switch(t.type){case Be.Answer:this._negotiator.handleSDP(n,i.sdp),this._open=!0;break;case Be.Candidate:this._negotiator.handleCandidate(i.candidate);break;default:G.default.warn("Unrecognized message type:".concat(n," from peer:").concat(this.peer));break}},e.prototype.answer=function(t,n){var i,s;if(n===void 0&&(n={}),this._localStream){G.default.warn("Local stream already exists on this MediaConnection. Are you answering a call twice?");return}this._localStream=t,n&&n.sdpTransform&&(this.options.sdpTransform=n.sdpTransform),this._negotiator.startConnection(vr(vr({},this.options._payload),{_stream:t}));var a=this.provider._getMessages(this.connectionId);try{for(var o=Uu(a),c=o.next();!c.done;c=o.next()){var l=c.value;this.handleMessage(l)}}catch(u){i={error:u}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}this._open=!0},e.prototype.close=function(){this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this._localStream=null,this._remoteStream=null,this.provider&&(this.provider._removeConnection(this),this.provider=null),this.options&&this.options._stream&&(this.options._stream=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.ID_PREFIX="mc_",e}(zs.BaseConnection),Bs={};Bt(Bs,"DataConnection",()=>gc,r=>gc=r);var mc={};Bt(mc,"EncodingQueue",()=>yc,r=>yc=r);var Du=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),yc=function(r){Du(e,r);function e(){var t=r.call(this)||this;return t.fileReader=new FileReader,t._queue=[],t._processing=!1,t.fileReader.onload=function(n){t._processing=!1,n.target&&t.emit("done",n.target.result),t.doNextTask()},t.fileReader.onerror=function(n){G.default.error("EncodingQueue error:",n),t._processing=!1,t.destroy(),t.emit("error",n)},t}return Object.defineProperty(e.prototype,"queue",{get:function(){return this._queue},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"size",{get:function(){return this.queue.length},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"processing",{get:function(){return this._processing},enumerable:!1,configurable:!0}),e.prototype.enque=function(t){this.queue.push(t),!this.processing&&this.doNextTask()},e.prototype.destroy=function(){this.fileReader.abort(),this._queue=[]},e.prototype.doNextTask=function(){this.size!==0&&(this.processing||(this._processing=!0,this.fileReader.readAsArrayBuffer(this.queue.shift())))},e}(ni.EventEmitter),Lu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),Fu=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},gc=function(r){Lu(e,r);function e(t,n,i){var s=r.call(this,t,n,i)||this;return s.stringify=JSON.stringify,s.parse=JSON.parse,s._buffer=[],s._bufferSize=0,s._buffering=!1,s._chunkedData={},s._encodingQueue=new mc.EncodingQueue,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s.label=s.options.label||s.connectionId,s.serialization=s.options.serialization||qt.Binary,s.reliable=!!s.options.reliable,s._encodingQueue.on("done",function(a){s._bufferedSend(a)}),s._encodingQueue.on("error",function(){G.default.error("DC#".concat(s.connectionId,": Error occured in encoding from blob to arraybuffer, close DC")),s.close()}),s._negotiator=new Is.Negotiator(s),s._negotiator.startConnection(s.options._payload||{originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Pt.Data},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dataChannel",{get:function(){return this._dc},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bufferSize",{get:function(){return this._bufferSize},enumerable:!1,configurable:!0}),e.prototype.initialize=function(t){this._dc=t,this._configureDataChannel()},e.prototype._configureDataChannel=function(){var t=this;(!te.supports.binaryBlob||te.supports.reliable)&&(this.dataChannel.binaryType="arraybuffer"),this.dataChannel.onopen=function(){G.default.log("DC#".concat(t.connectionId," dc connection success")),t._open=!0,t.emit("open")},this.dataChannel.onmessage=function(n){G.default.log("DC#".concat(t.connectionId," dc onmessage:"),n.data),t._handleDataMessage(n)},this.dataChannel.onclose=function(){G.default.log("DC#".concat(t.connectionId," dc closed for:"),t.peer),t.close()}},e.prototype._handleDataMessage=function(t){var n=this,i=t.data,s=i.constructor,a=this.serialization===qt.Binary||this.serialization===qt.BinaryUTF8,o=i;if(a){if(s===Blob){te.blobToArrayBuffer(i,function(l){var u=te.unpack(l);n.emit("data",u)});return}else if(s===ArrayBuffer)o=te.unpack(i);else if(s===String){var c=te.binaryStringToArrayBuffer(i);o=te.unpack(c)}}else this.serialization===qt.JSON&&(o=this.parse(i));if(o.__peerData){this._handleChunk(o);return}r.prototype.emit.call(this,"data",o)},e.prototype._handleChunk=function(t){var n=t.__peerData,i=this._chunkedData[n]||{data:[],count:0,total:t.total};if(i.data[t.n]=t.data,i.count++,this._chunkedData[n]=i,i.total===i.count){delete this._chunkedData[n];var s=new Blob(i.data);this._handleDataMessage({data:s})}},e.prototype.close=function(){this._buffer=[],this._bufferSize=0,this._chunkedData={},this._negotiator&&(this._negotiator.cleanup(),this._negotiator=null),this.provider&&(this.provider._removeConnection(this),this.provider=null),this.dataChannel&&(this.dataChannel.onopen=null,this.dataChannel.onmessage=null,this.dataChannel.onclose=null,this._dc=null),this._encodingQueue&&(this._encodingQueue.destroy(),this._encodingQueue.removeAllListeners(),this._encodingQueue=null),this.open&&(this._open=!1,r.prototype.emit.call(this,"close"))},e.prototype.send=function(t,n){if(!this.open){r.prototype.emit.call(this,"error",new Error("Connection is not open. You should listen for the `open` event before sending messages."));return}if(this.serialization===qt.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===qt.Binary||this.serialization===qt.BinaryUTF8){var i=te.pack(t);if(!n&&i.size>te.chunkedMTU){this._sendChunks(i);return}te.supports.binaryBlob?this._bufferedSend(i):this._encodingQueue.enque(i)}else this._bufferedSend(t)},e.prototype._bufferedSend=function(t){(this._buffering||!this._trySend(t))&&(this._buffer.push(t),this._bufferSize=this._buffer.length)},e.prototype._trySend=function(t){var n=this;if(!this.open)return!1;if(this.dataChannel.bufferedAmount>e.MAX_BUFFERED_AMOUNT)return this._buffering=!0,setTimeout(function(){n._buffering=!1,n._tryBuffer()},50),!1;try{this.dataChannel.send(t)}catch(i){return G.default.error("DC#:".concat(this.connectionId," Error when sending:"),i),this._buffering=!0,this.close(),!1}return!0},e.prototype._tryBuffer=function(){if(this.open&&this._buffer.length!==0){var t=this._buffer[0];this._trySend(t)&&(this._buffer.shift(),this._bufferSize=this._buffer.length,this._tryBuffer())}},e.prototype._sendChunks=function(t){var n,i,s=te.chunk(t);G.default.log("DC#".concat(this.connectionId," Try to send ").concat(s.length," chunks..."));try{for(var a=Fu(s),o=a.next();!o.done;o=a.next()){var c=o.value;this.send(c,!0)}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.handleMessage=function(t){var n=t.payload;switch(t.type){case Be.Answer:this._negotiator.handleSDP(t.type,n.sdp);break;case Be.Candidate:this._negotiator.handleCandidate(n.candidate);break;default:G.default.warn("Unrecognized message type:",t.type,"from peer:",this.peer);break}},e.ID_PREFIX="dc_",e.MAX_BUFFERED_AMOUNT=8388608,e}(zs.BaseConnection),vc={};Bt(vc,"API",()=>xc,r=>xc=r);var Sc=function(r,e,t,n){function i(s){return s instanceof t?s:new t(function(a){a(s)})}return new(t||(t=Promise))(function(s,a){function o(u){try{l(n.next(u))}catch(p){a(p)}}function c(u){try{l(n.throw(u))}catch(p){a(p)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},bc=function(r,e){var t={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,a;return a={next:o(0),throw:o(1),return:o(2)},typeof Symbol=="function"&&(a[Symbol.iterator]=function(){return this}),a;function o(l){return function(u){return c([l,u])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;t;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return t.label++,{value:l[1],done:!1};case 5:t.label++,i=l[1],l=[0];continue;case 7:l=t.ops.pop(),t.trys.pop();continue;default:if(s=t.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){t=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){t.label=l[1];break}if(l[0]===6&&t.label<s[1]){t.label=s[1],s=l;break}if(s&&t.label<s[2]){t.label=s[2],t.ops.push(l);break}s[2]&&t.ops.pop(),t.trys.pop();continue}l=e.call(r,t)}catch(u){l=[6,u],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}},xc=function(){function r(e){this._options=e}return r.prototype._buildRequest=function(e){var t=this._options.secure?"https":"http",n=this._options,i=n.host,s=n.port,a=n.path,o=n.key,c=new URL("".concat(t,"://").concat(i,":").concat(s).concat(a).concat(o,"/").concat(e));return c.searchParams.set("ts","".concat(Date.now()).concat(Math.random())),c.searchParams.set("version",As.version),fetch(c.href,{referrerPolicy:this._options.referrerPolicy})},r.prototype.retrieveId=function(){return Sc(this,void 0,Promise,function(){var e,t,n;return bc(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("id")];case 1:if(e=i.sent(),e.status!==200)throw new Error("Error. Status:".concat(e.status));return[2,e.text()];case 2:throw t=i.sent(),G.default.error("Error retrieving ID",t),n="",this._options.path==="/"&&this._options.host!==te.CLOUD_HOST&&(n=" If you passed in a `path` to your self-hosted PeerServer, you'll also need to pass in that same path when creating a new Peer."),new Error("Could not get an ID from the server."+n);case 3:return[2]}})})},r.prototype.listAllPeers=function(){return Sc(this,void 0,Promise,function(){var e,t,n;return bc(this,function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,this._buildRequest("peers")];case 1:if(e=i.sent(),e.status!==200)throw e.status===401?(t="",this._options.host===te.CLOUD_HOST?t="It looks like you're using the cloud server. You can email team@peerjs.com to enable peer listing for your API key.":t="You need to enable `allow_discovery` on your self-hosted PeerServer to use this feature.",new Error("It doesn't look like you have permission to list peers IDs. "+t)):new Error("Error. Status:".concat(e.status));return[2,e.json()];case 2:throw n=i.sent(),G.default.error("Error retrieving list peers",n),new Error("Could not get list peers from the server."+n);case 3:return[2]}})})},r}(),Vu=function(){var r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,i){n.__proto__=i}||function(n,i){for(var s in i)Object.prototype.hasOwnProperty.call(i,s)&&(n[s]=i[s])},r(e,t)};return function(e,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");r(e,t);function n(){this.constructor=e}e.prototype=t===null?Object.create(t):(n.prototype=t.prototype,new n)}}(),ri=function(){return ri=Object.assign||function(r){for(var e,t=1,n=arguments.length;t<n;t++){e=arguments[t];for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=e[i])}return r},ri.apply(this,arguments)},si=function(r){var e=typeof Symbol=="function"&&Symbol.iterator,t=e&&r[e],n=0;if(t)return t.call(r);if(r&&typeof r.length=="number")return{next:function(){return r&&n>=r.length&&(r=void 0),{value:r&&r[n++],done:!r}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")},ju=function(r,e){var t=typeof Symbol=="function"&&r[Symbol.iterator];if(!t)return r;var n=t.call(r),i,s=[],a;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(o){a={error:o}}finally{try{i&&!i.done&&(t=n.return)&&t.call(n)}finally{if(a)throw a.error}}return s},Ns=function(r){Vu(e,r);function e(t,n){var i=r.call(this)||this;i._id=null,i._lastServerId=null,i._destroyed=!1,i._disconnected=!1,i._open=!1,i._connections=new Map,i._lostMessages=new Map;var s;return t&&t.constructor==Object?n=t:t&&(s=t.toString()),n=ri({debug:0,host:te.CLOUD_HOST,port:te.CLOUD_PORT,path:"/",key:e.DEFAULT_KEY,token:te.randomToken(),config:te.defaultConfig,referrerPolicy:"strict-origin-when-cross-origin"},n),i._options=n,i._options.host==="/"&&(i._options.host=window.location.hostname),i._options.path&&(i._options.path[0]!=="/"&&(i._options.path="/"+i._options.path),i._options.path[i._options.path.length-1]!=="/"&&(i._options.path+="/")),i._options.secure===void 0&&i._options.host!==te.CLOUD_HOST?i._options.secure=te.isSecure():i._options.host==te.CLOUD_HOST&&(i._options.secure=!0),i._options.logFunction&&G.default.setLogFunction(i._options.logFunction),G.default.logLevel=i._options.debug||0,i._api=new vc.API(n),i._socket=i._createServerConnection(),!te.supports.audioVideo&&!te.supports.data?(i._delayedAbort(we.BrowserIncompatible,"The current browser does not support WebRTC"),i):s&&!te.validateId(s)?(i._delayedAbort(we.InvalidID,'ID "'.concat(s,'" is invalid')),i):(s?i._initialize(s):i._api.retrieveId().then(function(a){return i._initialize(a)}).catch(function(a){return i._abort(we.ServerError,a)}),i)}return Object.defineProperty(e.prototype,"id",{get:function(){return this._id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this._options},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"open",{get:function(){return this._open},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"socket",{get:function(){return this._socket},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"connections",{get:function(){var t,n,i=Object.create(null);try{for(var s=si(this._connections),a=s.next();!a.done;a=s.next()){var o=ju(a.value,2),c=o[0],l=o[1];i[c]=l}}catch(u){t={error:u}}finally{try{a&&!a.done&&(n=s.return)&&n.call(s)}finally{if(t)throw t.error}}return i},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"destroyed",{get:function(){return this._destroyed},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"disconnected",{get:function(){return this._disconnected},enumerable:!1,configurable:!0}),e.prototype._createServerConnection=function(){var t=this,n=new uc.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return n.on(Xt.Message,function(i){t._handleMessage(i)}),n.on(Xt.Error,function(i){t._abort(we.SocketError,i)}),n.on(Xt.Disconnected,function(){t.disconnected||(t.emitError(we.Network,"Lost connection to server."),t.disconnect())}),n.on(Xt.Close,function(){t.disconnected||t._abort(we.SocketClosed,"Underlying socket is already closed.")}),n},e.prototype._initialize=function(t){this._id=t,this.socket.start(t,this._options.token)},e.prototype._handleMessage=function(t){var n,i,s=t.type,a=t.payload,o=t.src;switch(s){case Be.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Be.Error:this._abort(we.ServerError,a.msg);break;case Be.IdTaken:this._abort(we.UnavailableID,'ID "'.concat(this.id,'" is taken'));break;case Be.InvalidKey:this._abort(we.InvalidKey,'API KEY "'.concat(this._options.key,'" is invalid'));break;case Be.Leave:G.default.log("Received leave message from ".concat(o)),this._cleanupPeer(o),this._connections.delete(o);break;case Be.Expire:this.emitError(we.PeerUnavailable,"Could not connect to peer ".concat(o));break;case Be.Offer:var x=a.connectionId,w=this.getConnection(o,x);if(w&&(w.close(),G.default.warn("Offer received for existing Connection ID:".concat(x))),a.type===Pt.Media){var c=new Os.MediaConnection(o,this,{connectionId:x,_payload:a,metadata:a.metadata});w=c,this._addConnection(o,w),this.emit("call",c)}else if(a.type===Pt.Data){var l=new Bs.DataConnection(o,this,{connectionId:x,_payload:a,metadata:a.metadata,label:a.label,serialization:a.serialization,reliable:a.reliable});w=l,this._addConnection(o,w),this.emit("connection",l)}else{G.default.warn("Received malformed connection type:".concat(a.type));return}var u=this._getMessages(x);try{for(var p=si(u),m=p.next();!m.done;m=p.next()){var f=m.value;w.handleMessage(f)}}catch(g){n={error:g}}finally{try{m&&!m.done&&(i=p.return)&&i.call(p)}finally{if(n)throw n.error}}break;default:if(!a){G.default.warn("You received a malformed message from ".concat(o," of type ").concat(s));return}var x=a.connectionId,w=this.getConnection(o,x);w&&w.peerConnection?w.handleMessage(t):x?this._storeMessage(x,t):G.default.warn("You received an unrecognized message:",t);break}},e.prototype._storeMessage=function(t,n){this._lostMessages.has(t)||this._lostMessages.set(t,[]),this._lostMessages.get(t).push(n)},e.prototype._getMessages=function(t){var n=this._lostMessages.get(t);return n?(this._lostMessages.delete(t),n):[]},e.prototype.connect=function(t,n){if(n===void 0&&(n={}),this.disconnected){G.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect, or call reconnect on this peer if you believe its ID to still be available."),this.emitError(we.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}var i=new Bs.DataConnection(t,this,n);return this._addConnection(t,i),i},e.prototype.call=function(t,n,i){if(i===void 0&&(i={}),this.disconnected){G.default.warn("You cannot connect to a new Peer because you called .disconnect() on this Peer and ended your connection with the server. You can create a new Peer to reconnect."),this.emitError(we.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}if(!n){G.default.error("To call a peer, you must provide a stream from your browser's `getUserMedia`.");return}var s=new Os.MediaConnection(t,this,ri(ri({},i),{_stream:n}));return this._addConnection(t,s),s},e.prototype._addConnection=function(t,n){G.default.log("add connection ".concat(n.type,":").concat(n.connectionId," to peerId:").concat(t)),this._connections.has(t)||this._connections.set(t,[]),this._connections.get(t).push(n)},e.prototype._removeConnection=function(t){var n=this._connections.get(t.peer);if(n){var i=n.indexOf(t);i!==-1&&n.splice(i,1)}this._lostMessages.delete(t.connectionId)},e.prototype.getConnection=function(t,n){var i,s,a=this._connections.get(t);if(!a)return null;try{for(var o=si(a),c=o.next();!c.done;c=o.next()){var l=c.value;if(l.connectionId===n)return l}}catch(u){i={error:u}}finally{try{c&&!c.done&&(s=o.return)&&s.call(o)}finally{if(i)throw i.error}}return null},e.prototype._delayedAbort=function(t,n){var i=this;setTimeout(function(){i._abort(t,n)},0)},e.prototype._abort=function(t,n){G.default.error("Aborting!"),this.emitError(t,n),this._lastServerId?this.disconnect():this.destroy()},e.prototype.emitError=function(t,n){G.default.error("Error:",n);var i;typeof n=="string"?i=new Error(n):i=n,i.type=t,this.emit("error",i)},e.prototype.destroy=function(){this.destroyed||(G.default.log("Destroy peer with ID:".concat(this.id)),this.disconnect(),this._cleanup(),this._destroyed=!0,this.emit("close"))},e.prototype._cleanup=function(){var t,n;try{for(var i=si(this._connections.keys()),s=i.next();!s.done;s=i.next()){var a=s.value;this._cleanupPeer(a),this._connections.delete(a)}}catch(o){t={error:o}}finally{try{s&&!s.done&&(n=i.return)&&n.call(i)}finally{if(t)throw t.error}}this.socket.removeAllListeners()},e.prototype._cleanupPeer=function(t){var n,i,s=this._connections.get(t);if(s)try{for(var a=si(s),o=a.next();!o.done;o=a.next()){var c=o.value;c.close()}}catch(l){n={error:l}}finally{try{o&&!o.done&&(i=a.return)&&i.call(a)}finally{if(n)throw n.error}}},e.prototype.disconnect=function(){if(!this.disconnected){var t=this.id;G.default.log("Disconnect peer with ID:".concat(t)),this._disconnected=!0,this._open=!1,this.socket.close(),this._lastServerId=t,this._id=null,this.emit("disconnected",t)}},e.prototype.reconnect=function(){if(this.disconnected&&!this.destroyed)G.default.log("Attempting reconnection to server with ID ".concat(this._lastServerId)),this._disconnected=!1,this._initialize(this._lastServerId);else{if(this.destroyed)throw new Error("This peer cannot reconnect to the server. It has already been destroyed.");if(!this.disconnected&&!this.open)G.default.error("In a hurry? We're still trying to make the initial connection!");else throw new Error("Peer ".concat(this.id," cannot reconnect because it is not disconnected from the server!"))}},e.prototype.listAllPeers=function(t){var n=this;t===void 0&&(t=function(i){}),this._api.listAllPeers().then(function(i){return t(i)}).catch(function(i){return n._abort(we.ServerError,i)})},e.DEFAULT_KEY="peerjs",e}(ni.EventEmitter),wc=ac.Peer;const Ju=Object.freeze(Object.defineProperty({__proto__:null,get Peer(){return Ns},default:wc,util:te},Symbol.toStringTag,{value:"Module"})),Gu=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;function Wu(r){return typeof r=="string"&&Gu.test(r)}const Ne=[];for(let r=0;r<256;++r)Ne.push((r+256).toString(16).slice(1));function Hu(r,e=0){return Ne[r[e+0]]+Ne[r[e+1]]+Ne[r[e+2]]+Ne[r[e+3]]+"-"+Ne[r[e+4]]+Ne[r[e+5]]+"-"+Ne[r[e+6]]+Ne[r[e+7]]+"-"+Ne[r[e+8]]+Ne[r[e+9]]+"-"+Ne[r[e+10]]+Ne[r[e+11]]+Ne[r[e+12]]+Ne[r[e+13]]+Ne[r[e+14]]+Ne[r[e+15]]}function qu(r){if(!Wu(r))throw TypeError("Invalid UUID");let e;const t=new Uint8Array(16);return t[0]=(e=parseInt(r.slice(0,8),16))>>>24,t[1]=e>>>16&255,t[2]=e>>>8&255,t[3]=e&255,t[4]=(e=parseInt(r.slice(9,13),16))>>>8,t[5]=e&255,t[6]=(e=parseInt(r.slice(14,18),16))>>>8,t[7]=e&255,t[8]=(e=parseInt(r.slice(19,23),16))>>>8,t[9]=e&255,t[10]=(e=parseInt(r.slice(24,36),16))/1099511627776&255,t[11]=e/4294967296&255,t[12]=e>>>24&255,t[13]=e>>>16&255,t[14]=e>>>8&255,t[15]=e&255,t}function Xu(r){r=unescape(encodeURIComponent(r));const e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t));return e}const Yu="6ba7b810-9dad-11d1-80b4-00c04fd430c8",Zu="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function Ku(r,e,t){function n(i,s,a,o){var c;if(typeof i=="string"&&(i=Xu(i)),typeof s=="string"&&(s=qu(s)),((c=s)===null||c===void 0?void 0:c.length)!==16)throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");let l=new Uint8Array(16+i.length);if(l.set(s),l.set(i,s.length),l=t(l),l[6]=l[6]&15|e,l[8]=l[8]&63|128,a){o=o||0;for(let u=0;u<16;++u)a[o+u]=l[u];return a}return Hu(l)}try{n.name=r}catch{}return n.DNS=Yu,n.URL=Zu,n}function Qu(r,e,t,n){switch(r){case 0:return e&t^~e&n;case 1:return e^t^n;case 2:return e&t^e&n^t&n;case 3:return e^t^n}}function Us(r,e){return r<<e|r>>>32-e}function $u(r){const e=[1518500249,1859775393,2400959708,3395469782],t=[1732584193,4023233417,2562383102,271733878,3285377520];if(typeof r=="string"){const a=unescape(encodeURIComponent(r));r=[];for(let o=0;o<a.length;++o)r.push(a.charCodeAt(o))}else Array.isArray(r)||(r=Array.prototype.slice.call(r));r.push(128);const n=r.length/4+2,i=Math.ceil(n/16),s=new Array(i);for(let a=0;a<i;++a){const o=new Uint32Array(16);for(let c=0;c<16;++c)o[c]=r[a*64+c*4]<<24|r[a*64+c*4+1]<<16|r[a*64+c*4+2]<<8|r[a*64+c*4+3];s[a]=o}s[i-1][14]=(r.length-1)*8/Math.pow(2,32),s[i-1][14]=Math.floor(s[i-1][14]),s[i-1][15]=(r.length-1)*8&4294967295;for(let a=0;a<i;++a){const o=new Uint32Array(80);for(let f=0;f<16;++f)o[f]=s[a][f];for(let f=16;f<80;++f)o[f]=Us(o[f-3]^o[f-8]^o[f-14]^o[f-16],1);let c=t[0],l=t[1],u=t[2],p=t[3],m=t[4];for(let f=0;f<80;++f){const x=Math.floor(f/20),w=Us(c,5)+Qu(x,l,u,p)+m+e[x]+o[f]>>>0;m=p,p=u,u=Us(l,30)>>>0,l=c,c=w}t[0]=t[0]+c>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+u>>>0,t[3]=t[3]+p>>>0,t[4]=t[4]+m>>>0}return[t[0]>>24&255,t[0]>>16&255,t[0]>>8&255,t[0]&255,t[1]>>24&255,t[1]>>16&255,t[1]>>8&255,t[1]&255,t[2]>>24&255,t[2]>>16&255,t[2]>>8&255,t[2]&255,t[3]>>24&255,t[3]>>16&255,t[3]>>8&255,t[3]&255,t[4]>>24&255,t[4]>>16&255,t[4]>>8&255,t[4]&255]}const eh=Ku("v5",80,$u);var _c={exports:{}},Tc={exports:{}},Mc;function th(){return Mc||(Mc=1,function(){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",e={rotl:function(t,n){return t<<n|t>>>32-n},rotr:function(t,n){return t<<32-n|t>>>n},endian:function(t){if(t.constructor==Number)return e.rotl(t,8)&16711935|e.rotl(t,24)&4278255360;for(var n=0;n<t.length;n++)t[n]=e.endian(t[n]);return t},randomBytes:function(t){for(var n=[];t>0;t--)n.push(Math.floor(Math.random()*256));return n},bytesToWords:function(t){for(var n=[],i=0,s=0;i<t.length;i++,s+=8)n[s>>>5]|=t[i]<<24-s%32;return n},wordsToBytes:function(t){for(var n=[],i=0;i<t.length*32;i+=8)n.push(t[i>>>5]>>>24-i%32&255);return n},bytesToHex:function(t){for(var n=[],i=0;i<t.length;i++)n.push((t[i]>>>4).toString(16)),n.push((t[i]&15).toString(16));return n.join("")},hexToBytes:function(t){for(var n=[],i=0;i<t.length;i+=2)n.push(parseInt(t.substr(i,2),16));return n},bytesToBase64:function(t){for(var n=[],i=0;i<t.length;i+=3)for(var s=t[i]<<16|t[i+1]<<8|t[i+2],a=0;a<4;a++)i*8+a*6<=t.length*8?n.push(r.charAt(s>>>6*(3-a)&63)):n.push("=");return n.join("")},base64ToBytes:function(t){t=t.replace(/[^A-Z0-9+\/]/ig,"");for(var n=[],i=0,s=0;i<t.length;s=++i%4)s!=0&&n.push((r.indexOf(t.charAt(i-1))&Math.pow(2,-2*s+8)-1)<<s*2|r.indexOf(t.charAt(i))>>>6-s*2);return n}};Tc.exports=e}()),Tc.exports}var Ds,Cc;function Ec(){if(Cc)return Ds;Cc=1;var r={utf8:{stringToBytes:function(e){return r.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(r.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n<e.length;n++)t.push(e.charCodeAt(n)&255);return t},bytesToString:function(e){for(var t=[],n=0;n<e.length;n++)t.push(String.fromCharCode(e[n]));return t.join("")}}};return Ds=r,Ds}var Ls,Pc;function nh(){if(Pc)return Ls;Pc=1,Ls=function(t){return t!=null&&(r(t)||e(t)||!!t._isBuffer)};function r(t){return!!t.constructor&&typeof t.constructor.isBuffer=="function"&&t.constructor.isBuffer(t)}function e(t){return typeof t.readFloatLE=="function"&&typeof t.slice=="function"&&r(t.slice(0,0))}return Ls}var kc;function ih(){return kc||(kc=1,function(){var r=th(),e=Ec().utf8,t=nh(),n=Ec().bin,i=function(s,a){s.constructor==String?a&&a.encoding==="binary"?s=n.stringToBytes(s):s=e.stringToBytes(s):t(s)?s=Array.prototype.slice.call(s,0):!Array.isArray(s)&&s.constructor!==Uint8Array&&(s=s.toString());for(var o=r.bytesToWords(s),c=s.length*8,l=1732584193,u=-271733879,p=-1732584194,m=271733878,f=0;f<o.length;f++)o[f]=(o[f]<<8|o[f]>>>24)&16711935|(o[f]<<24|o[f]>>>8)&4278255360;o[c>>>5]|=128<<c%32,o[(c+64>>>9<<4)+14]=c;for(var x=i._ff,w=i._gg,g=i._hh,v=i._ii,f=0;f<o.length;f+=16){var _=l,S=u,T=p,M=m;l=x(l,u,p,m,o[f+0],7,-680876936),m=x(m,l,u,p,o[f+1],12,-389564586),p=x(p,m,l,u,o[f+2],17,606105819),u=x(u,p,m,l,o[f+3],22,-1044525330),l=x(l,u,p,m,o[f+4],7,-176418897),m=x(m,l,u,p,o[f+5],12,1200080426),p=x(p,m,l,u,o[f+6],17,-1473231341),u=x(u,p,m,l,o[f+7],22,-45705983),l=x(l,u,p,m,o[f+8],7,1770035416),m=x(m,l,u,p,o[f+9],12,-1958414417),p=x(p,m,l,u,o[f+10],17,-42063),u=x(u,p,m,l,o[f+11],22,-1990404162),l=x(l,u,p,m,o[f+12],7,1804603682),m=x(m,l,u,p,o[f+13],12,-40341101),p=x(p,m,l,u,o[f+14],17,-1502002290),u=x(u,p,m,l,o[f+15],22,1236535329),l=w(l,u,p,m,o[f+1],5,-165796510),m=w(m,l,u,p,o[f+6],9,-1069501632),p=w(p,m,l,u,o[f+11],14,643717713),u=w(u,p,m,l,o[f+0],20,-373897302),l=w(l,u,p,m,o[f+5],5,-701558691),m=w(m,l,u,p,o[f+10],9,38016083),p=w(p,m,l,u,o[f+15],14,-660478335),u=w(u,p,m,l,o[f+4],20,-405537848),l=w(l,u,p,m,o[f+9],5,568446438),m=w(m,l,u,p,o[f+14],9,-1019803690),p=w(p,m,l,u,o[f+3],14,-187363961),u=w(u,p,m,l,o[f+8],20,1163531501),l=w(l,u,p,m,o[f+13],5,-1444681467),m=w(m,l,u,p,o[f+2],9,-51403784),p=w(p,m,l,u,o[f+7],14,1735328473),u=w(u,p,m,l,o[f+12],20,-1926607734),l=g(l,u,p,m,o[f+5],4,-378558),m=g(m,l,u,p,o[f+8],11,-2022574463),p=g(p,m,l,u,o[f+11],16,1839030562),u=g(u,p,m,l,o[f+14],23,-35309556),l=g(l,u,p,m,o[f+1],4,-1530992060),m=g(m,l,u,p,o[f+4],11,1272893353),p=g(p,m,l,u,o[f+7],16,-155497632),u=g(u,p,m,l,o[f+10],23,-1094730640),l=g(l,u,p,m,o[f+13],4,681279174),m=g(m,l,u,p,o[f+0],11,-358537222),p=g(p,m,l,u,o[f+3],16,-722521979),u=g(u,p,m,l,o[f+6],23,76029189),l=g(l,u,p,m,o[f+9],4,-640364487),m=g(m,l,u,p,o[f+12],11,-421815835),p=g(p,m,l,u,o[f+15],16,530742520),u=g(u,p,m,l,o[f+2],23,-995338651),l=v(l,u,p,m,o[f+0],6,-198630844),m=v(m,l,u,p,o[f+7],10,1126891415),p=v(p,m,l,u,o[f+14],15,-1416354905),u=v(u,p,m,l,o[f+5],21,-57434055),l=v(l,u,p,m,o[f+12],6,1700485571),m=v(m,l,u,p,o[f+3],10,-1894986606),p=v(p,m,l,u,o[f+10],15,-1051523),u=v(u,p,m,l,o[f+1],21,-2054922799),l=v(l,u,p,m,o[f+8],6,1873313359),m=v(m,l,u,p,o[f+15],10,-30611744),p=v(p,m,l,u,o[f+6],15,-1560198380),u=v(u,p,m,l,o[f+13],21,1309151649),l=v(l,u,p,m,o[f+4],6,-145523070),m=v(m,l,u,p,o[f+11],10,-1120210379),p=v(p,m,l,u,o[f+2],15,718787259),u=v(u,p,m,l,o[f+9],21,-343485551),l=l+_>>>0,u=u+S>>>0,p=p+T>>>0,m=m+M>>>0}return r.endian([l,u,p,m])};i._ff=function(s,a,o,c,l,u,p){var m=s+(a&o|~a&c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._gg=function(s,a,o,c,l,u,p){var m=s+(a&c|o&~c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._hh=function(s,a,o,c,l,u,p){var m=s+(a^o^c)+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._ii=function(s,a,o,c,l,u,p){var m=s+(o^(a|~c))+(l>>>0)+p;return(m<<u|m>>>32-u)+a},i._blocksize=16,i._digestsize=16,_c.exports=function(s,a){if(s==null)throw new Error("Illegal argument "+s);var o=r.wordsToBytes(i(s,a));return a&&a.asBytes?o:a&&a.asString?n.bytesToString(o):r.bytesToHex(o)}}()),_c.exports}var rh=ih();const sh=lr(rh),je=["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f","10","11","12","13","14","15","16","17","18","19","1a","1b","1c","1d","1e","1f","20","21","22","23","24","25","26","27","28","29","2a","2b","2c","2d","2e","2f","30","31","32","33","34","35","36","37","38","39","3a","3b","3c","3d","3e","3f","40","41","42","43","44","45","46","47","48","49","4a","4b","4c","4d","4e","4f","50","51","52","53","54","55","56","57","58","59","5a","5b","5c","5d","5e","5f","60","61","62","63","64","65","66","67","68","69","6a","6b","6c","6d","6e","6f","70","71","72","73","74","75","76","77","78","79","7a","7b","7c","7d","7e","7f","80","81","82","83","84","85","86","87","88","89","8a","8b","8c","8d","8e","8f","90","91","92","93","94","95","96","97","98","99","9a","9b","9c","9d","9e","9f","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","aa","ab","ac","ad","ae","af","b0","b1","b2","b3","b4","b5","b6","b7","b8","b9","ba","bb","bc","bd","be","bf","c0","c1","c2","c3","c4","c5","c6","c7","c8","c9","ca","cb","cc","cd","ce","cf","d0","d1","d2","d3","d4","d5","d6","d7","d8","d9","da","db","dc","dd","de","df","e0","e1","e2","e3","e4","e5","e6","e7","e8","e9","ea","eb","ec","ed","ee","ef","f0","f1","f2","f3","f4","f5","f6","f7","f8","f9","fa","fb","fc","fd","fe","ff"];let Rc=1234567;const Ac=Math.PI/180,Oc=180/Math.PI;function oh(){const r=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(je[r&255]+je[r>>8&255]+je[r>>16&255]+je[r>>24&255]+"-"+je[e&255]+je[e>>8&255]+"-"+je[e>>16&15|64]+je[e>>24&255]+"-"+je[t&63|128]+je[t>>8&255]+"-"+je[t>>16&255]+je[t>>24&255]+je[n&255]+je[n>>8&255]+je[n>>16&255]+je[n>>24&255]).toLowerCase()}function Nt(r,e,t){return Math.max(e,Math.min(t,r))}function Ic(r,e){return(r%e+e)%e}function ah(r,e,t,n,i){return n+(r-e)*(i-n)/(t-e)}function ch(r,e,t){return r!==e?(t-r)/(e-r):0}function zc(r,e,t){return(1-t)*r+t*e}function lh(r,e,t,n){return zc(r,e,1-Math.exp(-t*n))}function uh(r,e=1){return e-Math.abs(Ic(r,e*2)-e)}function hh(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function dh(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function ph(r,e){return r+Math.floor(Math.random()*(e-r+1))}function fh(r,e){return r+Math.random()*(e-r)}function mh(r){return r*(.5-Math.random())}function yh(r){r!==void 0&&(Rc=r);let e=Rc+=1831565813;return e=Math.imul(e^e>>>15,e|1),e^=e+Math.imul(e^e>>>7,e|61),((e^e>>>14)>>>0)/4294967296}function gh(r){return r*Ac}function vh(r){return r*Oc}function Sh(r){return(r&r-1)===0&&r!==0}function bh(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function xh(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function wh(r,e,t,n,i){const s=Math.cos,a=Math.sin,o=s(t/2),c=a(t/2),l=s((e+n)/2),u=a((e+n)/2),p=s((e-n)/2),m=a((e-n)/2),f=s((n-e)/2),x=a((n-e)/2);switch(i){case"XYX":r.set(o*u,c*p,c*m,o*l);break;case"YZY":r.set(c*m,o*u,c*p,o*l);break;case"ZXZ":r.set(c*p,c*m,o*u,o*l);break;case"XZX":r.set(o*u,c*x,c*f,o*l);break;case"YXY":r.set(c*f,o*u,c*x,o*l);break;case"ZYZ":r.set(c*x,c*f,o*u,o*l);break;default:console.warn("../math.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function _h(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return r/4294967295;case Uint16Array:return r/65535;case Uint8Array:return r/255;case Int32Array:return Math.max(r/2147483647,-1);case Int16Array:return Math.max(r/32767,-1);case Int8Array:return Math.max(r/127,-1);default:throw new Error("Invalid component type.")}}function Th(r,e){switch(e.constructor){case Float32Array:return r;case Uint32Array:return Math.round(r*4294967295);case Uint16Array:return Math.round(r*65535);case Uint8Array:return Math.round(r*255);case Int32Array:return Math.round(r*2147483647);case Int16Array:return Math.round(r*32767);case Int8Array:return Math.round(r*127);default:throw new Error("Invalid component type.")}}const In={DEG2RAD:Ac,RAD2DEG:Oc,generateUUID:oh,clamp:Nt,euclideanModulo:Ic,mapLinear:ah,inverseLerp:ch,lerp:zc,damp:lh,pingpong:uh,smoothstep:hh,smootherstep:dh,randInt:ph,randFloat:fh,randFloatSpread:mh,seededRandom:yh,degToRad:gh,radToDeg:vh,isPowerOfTwo:Sh,ceilPowerOfTwo:bh,floorPowerOfTwo:xh,setQuaternionFromProperEuler:wh,normalize:Th,denormalize:_h};class re{constructor(e=0,t=0,n=0,i=1){this.isQuaternion=!0,this._x=e,this._y=t,this._z=n,this._w=i}static slerpFlat(e,t,n,i,s,a,o){let c=n[i+0],l=n[i+1],u=n[i+2],p=n[i+3];const m=s[a+0],f=s[a+1],x=s[a+2],w=s[a+3];if(o===0){e[t+0]=c,e[t+1]=l,e[t+2]=u,e[t+3]=p;return}if(o===1){e[t+0]=m,e[t+1]=f,e[t+2]=x,e[t+3]=w;return}if(p!==w||c!==m||l!==f||u!==x){let g=1-o;const v=c*m+l*f+u*x+p*w,_=v>=0?1:-1,S=1-v*v;if(S>Number.EPSILON){const M=Math.sqrt(S),E=Math.atan2(M,v*_);g=Math.sin(g*E)/M,o=Math.sin(o*E)/M}const T=o*_;if(c=c*g+m*T,l=l*g+f*T,u=u*g+x*T,p=p*g+w*T,g===1-o){const M=1/Math.sqrt(c*c+l*l+u*u+p*p);c*=M,l*=M,u*=M,p*=M}}e[t]=c,e[t+1]=l,e[t+2]=u,e[t+3]=p}static multiplyQuaternionsFlat(e,t,n,i,s,a){const o=n[i],c=n[i+1],l=n[i+2],u=n[i+3],p=s[a],m=s[a+1],f=s[a+2],x=s[a+3];return e[t]=o*x+u*p+c*f-l*m,e[t+1]=c*x+u*m+l*p-o*f,e[t+2]=l*x+u*f+o*m-c*p,e[t+3]=u*x-o*p-c*m-l*f,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new re(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){const n=e._x,i=e._y,s=e._z,a=e._order,o=Math.cos,c=Math.sin,l=o(n/2),u=o(i/2),p=o(s/2),m=c(n/2),f=c(i/2),x=c(s/2);switch(a){case"XYZ":this._x=m*u*p+l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p-m*f*x;break;case"YXZ":this._x=m*u*p+l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p+m*f*x;break;case"ZXY":this._x=m*u*p-l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p-m*f*x;break;case"ZYX":this._x=m*u*p-l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p+m*f*x;break;case"YZX":this._x=m*u*p+l*f*x,this._y=l*f*p+m*u*x,this._z=l*u*x-m*f*p,this._w=l*u*p-m*f*x;break;case"XZY":this._x=m*u*p-l*f*x,this._y=l*f*p-m*u*x,this._z=l*u*x+m*f*p,this._w=l*u*p+m*f*x;break;default:console.warn("../math.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return t===!0&&this._onChangeCallback(),this}setFromAxisAngle(e,t){const n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){const t=e.elements,n=t[0],i=t[4],s=t[8],a=t[1],o=t[5],c=t[9],l=t[2],u=t[6],p=t[10],m=n+o+p;if(m>0){const f=.5/Math.sqrt(m+1);this._w=.25/f,this._x=(u-c)*f,this._y=(s-l)*f,this._z=(a-i)*f}else if(n>o&&n>p){const f=2*Math.sqrt(1+n-o-p);this._w=(u-c)/f,this._x=.25*f,this._y=(i+a)/f,this._z=(s+l)/f}else if(o>p){const f=2*Math.sqrt(1+o-n-p);this._w=(s-l)/f,this._x=(i+a)/f,this._y=.25*f,this._z=(c+u)/f}else{const f=2*Math.sqrt(1+p-n-o);this._w=(a-i)/f,this._x=(s+l)/f,this._y=(c+u)/f,this._z=.25*f}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return n<Number.EPSILON?(n=0,Math.abs(e.x)>Math.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0,this._w=n):(this._x=0,this._y=-e.z,this._z=e.y,this._w=n)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x,this._w=n),this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(Nt(this.dot(e),-1,1)))}rotateTowards(e,t){const n=this.angleTo(e);if(n===0)return this;const i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return e===0?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){const n=e._x,i=e._y,s=e._z,a=e._w,o=t._x,c=t._y,l=t._z,u=t._w;return this._x=n*u+a*o+i*l-s*c,this._y=i*u+a*c+s*o-n*l,this._z=s*u+a*l+n*c-i*o,this._w=a*u-n*o-i*c-s*l,this._onChangeCallback(),this}slerp(e,t){if(t===0)return this;if(t===1)return this.copy(e);const n=this._x,i=this._y,s=this._z,a=this._w;let o=a*e._w+n*e._x+i*e._y+s*e._z;if(o<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,o=-o):this.copy(e),o>=1)return this._w=a,this._x=n,this._y=i,this._z=s,this;const c=1-o*o;if(c<=Number.EPSILON){const f=1-t;return this._w=f*a+t*this._w,this._x=f*n+t*this._x,this._y=f*i+t*this._y,this._z=f*s+t*this._z,this.normalize(),this}const l=Math.sqrt(c),u=Math.atan2(l,o),p=Math.sin((1-t)*u)/l,m=Math.sin(t*u)/l;return this._w=a*p+this._w*m,this._x=n*p+this._x*m,this._y=i*p+this._y*m,this._z=s*p+this._z*m,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){const e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),s=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),s*Math.sin(t),s*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class W{constructor(e=0,t=0,n=0){this.isVector3=!0,W.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return n===void 0&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+e)}}clone(){return new W(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(Bc.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(Bc.setFromAxisAngle(e,t))}applyMatrix3(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[3]*n+s[6]*i,this.y=s[1]*t+s[4]*n+s[7]*i,this.z=s[2]*t+s[5]*n+s[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=e.elements,a=1/(s[3]*t+s[7]*n+s[11]*i+s[15]);return this.x=(s[0]*t+s[4]*n+s[8]*i+s[12])*a,this.y=(s[1]*t+s[5]*n+s[9]*i+s[13])*a,this.z=(s[2]*t+s[6]*n+s[10]*i+s[14])*a,this}applyQuaternion(e){const t=this.x,n=this.y,i=this.z,s=e.x,a=e.y,o=e.z,c=e.w,l=2*(a*i-o*n),u=2*(o*t-s*i),p=2*(s*n-a*t);return this.x=t+c*l+a*p-o*u,this.y=n+c*u+o*l-s*p,this.z=i+c*p+s*u-a*l,this}transformDirection(e){const t=this.x,n=this.y,i=this.z,s=e.elements;return this.x=s[0]*t+s[4]*n+s[8]*i,this.y=s[1]*t+s[5]*n+s[9]*i,this.z=s[2]*t+s[6]*n+s[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){const n=e.x,i=e.y,s=e.z,a=t.x,o=t.y,c=t.z;return this.x=i*c-s*o,this.y=s*a-n*c,this.z=n*o-i*a,this}projectOnVector(e){const t=e.lengthSq();if(t===0)return this.set(0,0,0);const n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return Fs.copy(this).projectOnVector(e),this.sub(Fs)}reflect(e){return this.sub(Fs.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Nt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSphericalCoords(e,t,n){const i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){const t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){const t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,t*4)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,t*3)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){const e=Math.random()*Math.PI*2,t=Math.random()*2-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}abs(){return this.x=Math.abs(this.x),this.y=Math.abs(this.y),this.z=Math.abs(this.z),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}const Fs=new W,Bc=new re,Sr=2e3,Nc=2001;class At{constructor(e,t,n,i,s,a,o,c,l,u,p,m,f,x,w,g){this.isMatrix4=!0,At.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l,u,p,m,f,x,w,g)}extractPosition(e){return console.warn("THREE.Matrix4: .extractPosition() has been renamed to .copyPosition()."),this.copyPosition(e)}multiplyToArray(e,t,n){return console.error("THREE.Matrix4: .multiplyToArray() has been removed."),this}setRotationFromQuaternion(e){return this.makeRotationFromQuaternion(e)}set(e,t,n,i,s,a,o,c,l,u,p,m,f,x,w,g){const v=this.elements;return v[0]=e,v[4]=t,v[8]=n,v[12]=i,v[1]=s,v[5]=a,v[9]=o,v[13]=c,v[2]=l,v[6]=u,v[10]=p,v[14]=m,v[3]=f,v[7]=x,v[11]=w,v[15]=g,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new At().fromArray(this.elements)}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){const t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){const t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){const t=this.elements,n=e.elements,i=1/zn.setFromMatrixColumn(e,0).length(),s=1/zn.setFromMatrixColumn(e,1).length(),a=1/zn.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*s,t[5]=n[5]*s,t[6]=n[6]*s,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){const t=this.elements,n=e.x,i=e.y,s=e.z,a=Math.cos(n),o=Math.sin(n),c=Math.cos(i),l=Math.sin(i),u=Math.cos(s),p=Math.sin(s);if(e.order==="XYZ"){const m=a*u,f=a*p,x=o*u,w=o*p;t[0]=c*u,t[4]=-c*p,t[8]=l,t[1]=f+x*l,t[5]=m-w*l,t[9]=-o*c,t[2]=w-m*l,t[6]=x+f*l,t[10]=a*c}else if(e.order==="YXZ"){const m=c*u,f=c*p,x=l*u,w=l*p;t[0]=m+w*o,t[4]=x*o-f,t[8]=a*l,t[1]=a*p,t[5]=a*u,t[9]=-o,t[2]=f*o-x,t[6]=w+m*o,t[10]=a*c}else if(e.order==="ZXY"){const m=c*u,f=c*p,x=l*u,w=l*p;t[0]=m-w*o,t[4]=-a*p,t[8]=x+f*o,t[1]=f+x*o,t[5]=a*u,t[9]=w-m*o,t[2]=-a*l,t[6]=o,t[10]=a*c}else if(e.order==="ZYX"){const m=a*u,f=a*p,x=o*u,w=o*p;t[0]=c*u,t[4]=x*l-f,t[8]=m*l+w,t[1]=c*p,t[5]=w*l+m,t[9]=f*l-x,t[2]=-l,t[6]=o*c,t[10]=a*c}else if(e.order==="YZX"){const m=a*c,f=a*l,x=o*c,w=o*l;t[0]=c*u,t[4]=w-m*p,t[8]=x*p+f,t[1]=p,t[5]=a*u,t[9]=-o*u,t[2]=-l*u,t[6]=f*p+x,t[10]=m-w*p}else if(e.order==="XZY"){const m=a*c,f=a*l,x=o*c,w=o*l;t[0]=c*u,t[4]=-p,t[8]=l*u,t[1]=m*p+w,t[5]=a*u,t[9]=f*p-x,t[2]=x*p-f,t[6]=o*u,t[10]=w*p+m}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(Mh,e,Ch)}lookAt(e,t,n){const i=this.elements;return at.subVectors(e,t),at.lengthSq()===0&&(at.z=1),at.normalize(),nn.crossVectors(n,at),nn.lengthSq()===0&&(Math.abs(n.z)===1?at.x+=1e-4:at.z+=1e-4,at.normalize(),nn.crossVectors(n,at)),nn.normalize(),br.crossVectors(at,nn),i[0]=nn.x,i[4]=br.x,i[8]=at.x,i[1]=nn.y,i[5]=br.y,i[9]=at.y,i[2]=nn.z,i[6]=br.z,i[10]=at.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[4],c=n[8],l=n[12],u=n[1],p=n[5],m=n[9],f=n[13],x=n[2],w=n[6],g=n[10],v=n[14],_=n[3],S=n[7],T=n[11],M=n[15],E=i[0],P=i[4],O=i[8],R=i[12],A=i[1],B=i[5],I=i[9],U=i[13],L=i[2],j=i[6],H=i[10],Q=i[14],J=i[3],pe=i[7],ie=i[11],he=i[15];return s[0]=a*E+o*A+c*L+l*J,s[4]=a*P+o*B+c*j+l*pe,s[8]=a*O+o*I+c*H+l*ie,s[12]=a*R+o*U+c*Q+l*he,s[1]=u*E+p*A+m*L+f*J,s[5]=u*P+p*B+m*j+f*pe,s[9]=u*O+p*I+m*H+f*ie,s[13]=u*R+p*U+m*Q+f*he,s[2]=x*E+w*A+g*L+v*J,s[6]=x*P+w*B+g*j+v*pe,s[10]=x*O+w*I+g*H+v*ie,s[14]=x*R+w*U+g*Q+v*he,s[3]=_*E+S*A+T*L+M*J,s[7]=_*P+S*B+T*j+M*pe,s[11]=_*O+S*I+T*H+M*ie,s[15]=_*R+S*U+T*Q+M*he,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[4],i=e[8],s=e[12],a=e[1],o=e[5],c=e[9],l=e[13],u=e[2],p=e[6],m=e[10],f=e[14],x=e[3],w=e[7],g=e[11],v=e[15];return x*(+s*c*p-i*l*p-s*o*m+n*l*m+i*o*f-n*c*f)+w*(+t*c*f-t*l*m+s*a*m-i*a*f+i*l*u-s*c*u)+g*(+t*l*p-t*o*f-s*a*p+n*a*f+s*o*u-n*l*u)+v*(-i*o*u-t*c*p+t*o*m+i*a*p-n*a*m+n*c*u)}transpose(){const e=this.elements;let t;return t=e[1],e[1]=e[4],e[4]=t,t=e[2],e[2]=e[8],e[8]=t,t=e[6],e[6]=e[9],e[9]=t,t=e[3],e[3]=e[12],e[12]=t,t=e[7],e[7]=e[13],e[13]=t,t=e[11],e[11]=e[14],e[14]=t,this}setPosition(e,t,n){const i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8],p=e[9],m=e[10],f=e[11],x=e[12],w=e[13],g=e[14],v=e[15],_=p*g*l-w*m*l+w*c*f-o*g*f-p*c*v+o*m*v,S=x*m*l-u*g*l-x*c*f+a*g*f+u*c*v-a*m*v,T=u*w*l-x*p*l+x*o*f-a*w*f-u*o*v+a*p*v,M=x*p*c-u*w*c-x*o*m+a*w*m+u*o*g-a*p*g,E=t*_+n*S+i*T+s*M;if(E===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const P=1/E;return e[0]=_*P,e[1]=(w*m*s-p*g*s-w*i*f+n*g*f+p*i*v-n*m*v)*P,e[2]=(o*g*s-w*c*s+w*i*l-n*g*l-o*i*v+n*c*v)*P,e[3]=(p*c*s-o*m*s-p*i*l+n*m*l+o*i*f-n*c*f)*P,e[4]=S*P,e[5]=(u*g*s-x*m*s+x*i*f-t*g*f-u*i*v+t*m*v)*P,e[6]=(x*c*s-a*g*s-x*i*l+t*g*l+a*i*v-t*c*v)*P,e[7]=(a*m*s-u*c*s+u*i*l-t*m*l-a*i*f+t*c*f)*P,e[8]=T*P,e[9]=(x*p*s-u*w*s-x*n*f+t*w*f+u*n*v-t*p*v)*P,e[10]=(a*w*s-x*o*s+x*n*l-t*w*l-a*n*v+t*o*v)*P,e[11]=(u*o*s-a*p*s-u*n*l+t*p*l+a*n*f-t*o*f)*P,e[12]=M*P,e[13]=(u*w*i-x*p*i+x*n*m-t*w*m-u*n*g+t*p*g)*P,e[14]=(x*o*i-a*w*i-x*n*c+t*w*c+a*n*g-t*o*g)*P,e[15]=(a*p*i-u*o*i+u*n*c-t*p*c-a*n*m+t*o*m)*P,this}scale(e){const t=this.elements,n=e.x,i=e.y,s=e.z;return t[0]*=n,t[4]*=i,t[8]*=s,t[1]*=n,t[5]*=i,t[9]*=s,t[2]*=n,t[6]*=i,t[10]*=s,t[3]*=n,t[7]*=i,t[11]*=s,this}getMaxScaleOnAxis(){const e=this.elements,t=e[0]*e[0]+e[1]*e[1]+e[2]*e[2],n=e[4]*e[4]+e[5]*e[5]+e[6]*e[6],i=e[8]*e[8]+e[9]*e[9]+e[10]*e[10];return Math.sqrt(Math.max(t,n,i))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){const t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){const n=Math.cos(t),i=Math.sin(t),s=1-n,a=e.x,o=e.y,c=e.z,l=s*a,u=s*o;return this.set(l*a+n,l*o-i*c,l*c+i*o,0,l*o+i*c,u*o+n,u*c-i*a,0,l*c-i*o,u*c+i*a,s*c*c+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,s,a){return this.set(1,n,s,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){const i=this.elements,s=t._x,a=t._y,o=t._z,c=t._w,l=s+s,u=a+a,p=o+o,m=s*l,f=s*u,x=s*p,w=a*u,g=a*p,v=o*p,_=c*l,S=c*u,T=c*p,M=n.x,E=n.y,P=n.z;return i[0]=(1-(w+v))*M,i[1]=(f+T)*M,i[2]=(x-S)*M,i[3]=0,i[4]=(f-T)*E,i[5]=(1-(m+v))*E,i[6]=(g+_)*E,i[7]=0,i[8]=(x+S)*P,i[9]=(g-_)*P,i[10]=(1-(m+w))*P,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){const i=this.elements;let s=zn.set(i[0],i[1],i[2]).length();const a=zn.set(i[4],i[5],i[6]).length(),o=zn.set(i[8],i[9],i[10]).length();this.determinant()<0&&(s=-s),e.x=i[12],e.y=i[13],e.z=i[14],kt.copy(this);const c=1/s,l=1/a,u=1/o;return kt.elements[0]*=c,kt.elements[1]*=c,kt.elements[2]*=c,kt.elements[4]*=l,kt.elements[5]*=l,kt.elements[6]*=l,kt.elements[8]*=u,kt.elements[9]*=u,kt.elements[10]*=u,t.setFromRotationMatrix(kt),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,i,s,a,o=Sr){const c=this.elements,l=2*s/(t-e),u=2*s/(n-i),p=(t+e)/(t-e),m=(n+i)/(n-i);let f,x;if(o===Sr)f=-(a+s)/(a-s),x=-2*a*s/(a-s);else if(o===Nc)f=-a/(a-s),x=-a*s/(a-s);else throw new Error("Matrix4.makePerspective(): Invalid coordinate system: "+o);return c[0]=l,c[4]=0,c[8]=p,c[12]=0,c[1]=0,c[5]=u,c[9]=m,c[13]=0,c[2]=0,c[6]=0,c[10]=f,c[14]=x,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,i,s,a,o=Sr){const c=this.elements,l=1/(t-e),u=1/(n-i),p=1/(a-s),m=(t+e)*l,f=(n+i)*u;let x,w;if(o===Sr)x=(a+s)*p,w=-2*p;else if(o===Nc)x=s*p,w=-1*p;else throw new Error("../math.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return c[0]=2*l,c[4]=0,c[8]=0,c[12]=-m,c[1]=0,c[5]=2*u,c[9]=0,c[13]=-f,c[2]=0,c[6]=0,c[10]=w,c[14]=-x,c[3]=0,c[7]=0,c[11]=0,c[15]=1,this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<16;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}const zn=new W,kt=new At,Mh=new W(0,0,0),Ch=new W(1,1,1),nn=new W,br=new W,at=new W,Uc=new At,Dc=new re;class Ti{constructor(e=0,t=0,n=0,i=Ti.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new Ti(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){const i=e.elements,s=i[0],a=i[4],o=i[8],c=i[1],l=i[5],u=i[9],p=i[2],m=i[6],f=i[10];switch(t){case"XYZ":this._y=Math.asin(Nt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,f),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(m,l),this._z=0);break;case"YXZ":this._x=Math.asin(-Nt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,f),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-p,s),this._z=0);break;case"ZXY":this._x=Math.asin(Nt(m,-1,1)),Math.abs(m)<.9999999?(this._y=Math.atan2(-p,f),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-Nt(p,-1,1)),Math.abs(p)<.9999999?(this._x=Math.atan2(m,f),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(Nt(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-p,s)):(this._x=0,this._y=Math.atan2(o,f));break;case"XZY":this._z=Math.asin(-Nt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(m,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-u,f),this._y=0);break;default:console.warn("../math.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,n===!0&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return Uc.makeRotationFromQuaternion(e),this.setFromRotationMatrix(Uc,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return Dc.setFromEuler(this),this.setFromQuaternion(Dc,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],e[3]!==void 0&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(e){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}Ti.DEFAULT_ORDER="XYZ";class Wn{constructor(e=0,t=0){this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+e)}}clone(){return new Wn(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){const t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){const t=Math.sqrt(this.lengthSq()*e.lengthSq());if(t===0)return Math.PI/2;const n=this.dot(e)/t;return Math.acos(Nt(n,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){const t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}rotateAround(e,t){const n=Math.cos(t),i=Math.sin(t),s=this.x-e.x,a=this.y-e.y;return this.x=s*n-a*i+e.x,this.y=s*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}Wn.isVector2=!0;class nt{constructor(e=0,t=0,n=0,i=1){nt.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw new Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+e)}}clone(){return new nt(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){const t=this.x,n=this.y,i=this.z,s=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*s,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*s,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*s,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*s,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);const t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,s;const a=e.elements,o=a[0],c=a[4],l=a[8],u=a[1],p=a[5],m=a[9],f=a[2],x=a[6],w=a[10];if(Math.abs(c-u)<.01&&Math.abs(l-f)<.01&&Math.abs(m-x)<.01){if(Math.abs(c+u)<.1&&Math.abs(l+f)<.1&&Math.abs(m+x)<.1&&Math.abs(o+p+w-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const v=(o+1)/2,_=(p+1)/2,S=(w+1)/2,T=(c+u)/4,M=(l+f)/4,E=(m+x)/4;return v>_&&v>S?v<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(v),i=T/n,s=M/n):_>S?_<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(_),n=T/i,s=E/i):S<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(S),n=M/s,i=E/s),this.set(n,i,s,t),this}let g=Math.sqrt((x-m)*(x-m)+(l-f)*(l-f)+(u-c)*(u-c));return Math.abs(g)<.001&&(g=1),this.x=(x-m)/g,this.y=(l-f)/g,this.z=(u-c)/g,this.w=Math.acos((o+p+w-1)/2),this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=Math.max(e.x,Math.min(t.x,this.x)),this.y=Math.max(e.y,Math.min(t.y,this.y)),this.z=Math.max(e.z,Math.min(t.z,this.z)),this.w=Math.max(e.w,Math.min(t.w,this.w)),this}clampScalar(e,t){return this.x=Math.max(e,Math.min(t,this.x)),this.y=Math.max(e,Math.min(t,this.y)),this.z=Math.max(e,Math.min(t,this.z)),this.w=Math.max(e,Math.min(t,this.w)),this}clampLength(e,t){const n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(e,Math.min(t,n)))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class Lt{constructor(e,t,n,i,s,a,o,c,l){Lt.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],e!==void 0&&this.set(e,t,n,i,s,a,o,c,l)}set(e,t,n,i,s,a,o,c,l){const u=this.elements;return u[0]=e,u[1]=i,u[2]=o,u[3]=t,u[4]=s,u[5]=c,u[6]=n,u[7]=a,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){const t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){const t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){const n=e.elements,i=t.elements,s=this.elements,a=n[0],o=n[3],c=n[6],l=n[1],u=n[4],p=n[7],m=n[2],f=n[5],x=n[8],w=i[0],g=i[3],v=i[6],_=i[1],S=i[4],T=i[7],M=i[2],E=i[5],P=i[8];return s[0]=a*w+o*_+c*M,s[3]=a*g+o*S+c*E,s[6]=a*v+o*T+c*P,s[1]=l*w+u*_+p*M,s[4]=l*g+u*S+p*E,s[7]=l*v+u*T+p*P,s[2]=m*w+f*_+x*M,s[5]=m*g+f*S+x*E,s[8]=m*v+f*T+x*P,this}multiplyScalar(e){const t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8];return t*a*u-t*o*l-n*s*u+n*o*c+i*s*l-i*a*c}invert(){const e=this.elements,t=e[0],n=e[1],i=e[2],s=e[3],a=e[4],o=e[5],c=e[6],l=e[7],u=e[8],p=u*a-o*l,m=o*c-u*s,f=l*s-a*c,x=t*p+n*m+i*f;if(x===0)return this.set(0,0,0,0,0,0,0,0,0);const w=1/x;return e[0]=p*w,e[1]=(i*l-u*n)*w,e[2]=(o*n-i*a)*w,e[3]=m*w,e[4]=(u*t-i*c)*w,e[5]=(i*s-o*t)*w,e[6]=f*w,e[7]=(n*c-l*t)*w,e[8]=(a*t-n*s)*w,this}transpose(){let e;const t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){const t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,s,a,o){const c=Math.cos(s),l=Math.sin(s);return this.set(n*c,n*l,-n*(c*a+l*o)+a+e,-i*l,i*c,-i*(-l*a+c*o)+o+t,0,0,1),this}scale(e,t){return this.premultiply(Vs.makeScale(e,t)),this}rotate(e){return this.premultiply(Vs.makeRotation(-e)),this}translate(e,t){return this.premultiply(Vs.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){const t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){const t=this.elements,n=e.elements;for(let i=0;i<9;i++)if(t[i]!==n[i])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){const n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new Lt().fromArray(this.elements)}}const Vs=new Lt;var Ze;(function(r){r[r.Random=0]="Random",r[r.Loop=1]="Loop",r[r.PingPong=2]="PingPong",r[r.Burst=3]="Burst"})(Ze||(Ze={}));function oi(r,e,t,n){let i;switch(Ze.Random===r?e=Math.random():Ze.Burst===r&&n.isBursting&&(e=n.burstParticleIndex/n.burstParticleCount),t>0?i=Math.floor(e/t)*t:i=e,r){case Ze.Loop:i=i%1;break;case Ze.PingPong:i=Math.abs(i%2-1);break}return i}class _n{constructor(e,t,n,i){this.p=[e,t,n,i]}genValue(e){const t=e*e,n=e*e*e,i=1-e,s=i*i,a=s*i;return this.p[0]*a+this.p[1]*s*e*3+this.p[2]*i*t*3+this.p[3]*n}derivativeCoefficients(e){const t=[];for(let n=e,i=n.length-1;i>0;i--){const s=[];for(let a=0;a<i;a++){const o=i*(n[a+1]-n[a]);s.push(o)}t.push(s),n=s}return t}getSlope(e){const t=this.derivativeCoefficients(this.p)[0],n=1-e,i=n*n,s=n*e*2,a=e*e;return i*t[0]+s*t[1]+a*t[2]}controlCurve(e,t){this.p[1]=e/3+this.p[0],this.p[2]=this.p[3]-t/3}hull(e){let t=this.p,n=[],i,s=0,a=0,o=0;const c=[];for(c[s++]=t[0],c[s++]=t[1],c[s++]=t[2],c[s++]=t[3];t.length>1;){for(n=[],a=0,o=t.length-1;a<o;a++)i=e*t[a]+(1-e)*t[a+1],c[s++]=i,n.push(i);t=n}return c}split(e){const t=this.hull(e);return{left:new _n(t[0],t[4],t[7],t[9]),right:new _n(t[9],t[8],t[6],t[3]),span:t}}clone(){return new _n(this.p[0],this.p[1],this.p[2],this.p[3])}toJSON(){return{p0:this.p[0],p1:this.p[1],p2:this.p[2],p3:this.p[3]}}static fromJSON(e){return new _n(e.p0,e.p1,e.p2,e.p3)}}const ai=r=>({r:r.x,g:r.y,b:r.z,a:r.w}),ci=r=>new nt(r.r,r.g,r.b,r.a),Eh=(r,e)=>{switch(e){case"Vector3":return new W(r.x,r.y,r.z);case"Vector4":return new nt(r.x,r.y,r.z,r.w);case"Color":return new W(r.r,r.g,r.b);case"Number":return r;default:return r}},Ph=(r,e)=>{switch(e){case"Vector3":return{x:r.x,y:r.y,z:r.z};case"Vector4":return{x:r.x,y:r.y,z:r.z,w:r.w};case"Color":return{r:r.x,g:r.y,b:r.z};case"Number":return r;default:return r}};class Qr{constructor(e,t){this.a=e,this.b=t,this.type="value"}startGen(e){}genColor(e,t){const n=Math.random();return t.copy(this.a).lerp(this.b,n)}toJSON(){return{type:"RandomColor",a:ai(this.a),b:ai(this.b)}}static fromJSON(e){return new Qr(ci(e.a),ci(e.b))}clone(){return new Qr(this.a.clone(),this.b.clone())}}class Hn{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t){return this.indexCount===-1&&this.startGen(e),t.copy(this.a).lerp(this.b,e[this.indexCount])}toJSON(){return{type:"ColorRange",a:ai(this.a),b:ai(this.b)}}static fromJSON(e){return new Hn(ci(e.a),ci(e.b))}clone(){return new Hn(this.a.clone(),this.b.clone())}}class ln{constructor(e,t){this.subType=t,this.type="function",this.keys=e}findKey(e){let t=0,n=0,i=this.keys.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.getStartX(s)&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.keys[e][1]}getEndX(e){return e+1<this.keys.length?this.keys[e+1][1]:1}genValue(e,t){const n=this.findKey(t);return this.subType==="Number"?n===-1?this.keys[0][0]:n+1>=this.keys.length?this.keys[this.keys.length-1][0]:(this.keys[n+1][0]-this.keys[n][0])*((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))+this.keys[n][0]:n===-1?e.copy(this.keys[0][0]):n+1>=this.keys.length?e.copy(this.keys[this.keys.length-1][0]):e.copy(this.keys[n][0]).lerp(this.keys[n+1][0],(t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toJSON(){return this.keys[0][0].constructor.name,{type:"CLinearFunction",subType:this.subType,keys:this.keys.map(([e,t])=>({value:Ph(e,this.subType),pos:t}))}}static fromJSON(e){return new ln(e.keys.map(t=>[Eh(t.value,e.subType),t.pos]),e.subType)}clone(){return this.subType==="Number"?new ln(this.keys.map(([e,t])=>[e,t]),this.subType):new ln(this.keys.map(([e,t])=>[e.clone(),t]),this.subType)}}const xr=new W;class En{constructor(e=[[new W(0,0,0),0],[new W(1,1,1),0]],t=[[1,0],[1,1]]){this.type="function",this.color=new ln(e,"Color"),this.alpha=new ln(t,"Number")}genColor(e,t,n){return this.color.genValue(xr,n),t.set(xr.x,xr.y,xr.z,this.alpha.genValue(1,n))}toJSON(){return{type:"Gradient",color:this.color.toJSON(),alpha:this.alpha.toJSON()}}static fromJSON(e){if(e.functions){const t=e.functions.map(n=>[Hn.fromJSON(n.function).a,n.start]);return e.functions.length>0&&t.push([Hn.fromJSON(e.functions[e.functions.length-1].function).b,1]),new En(t.map(n=>[new W(n[0].x,n[0].y,n[0].z),n[1]]),t.map(n=>[n[0].w,n[1]]))}else{const t=new En;return t.alpha=ln.fromJSON(e.alpha),t.color=ln.fromJSON(e.color),t}}clone(){const e=new En;return e.alpha=this.alpha.clone(),e.color=this.color.clone(),e}startGen(e){}}const js=new nt;class $r{constructor(e,t){this.indexCount=0,this.type="function",this.gradient1=e,this.gradient2=t}startGen(e){this.indexCount=e.length,e.push(Math.random())}genColor(e,t,n){return this.gradient1.genColor(e,t,n),this.gradient2.genColor(e,js,n),e&&e[this.indexCount]!==void 0?t.lerp(js,e[this.indexCount]):t.lerp(js,Math.random()),t}toJSON(){return{type:"RandomColorBetweenGradient",gradient1:this.gradient1.toJSON(),gradient2:this.gradient2.toJSON()}}static fromJSON(e){return new $r(En.fromJSON(e.gradient1),En.fromJSON(e.gradient2))}clone(){return new $r(this.gradient1.clone(),this.gradient2.clone())}}class Tn{constructor(e){this.color=e,this.type="value"}startGen(e){}genColor(e,t){return t.copy(this.color)}toJSON(){return{type:"ConstantColor",color:ai(this.color)}}static fromJSON(e){return new Tn(ci(e.color))}clone(){return new Tn(this.color.clone())}}function Js(r){switch(r.type){case"ConstantColor":return Tn.fromJSON(r);case"ColorRange":return Hn.fromJSON(r);case"RandomColor":return Qr.fromJSON(r);case"Gradient":return En.fromJSON(r);case"RandomColorBetweenGradient":return $r.fromJSON(r);default:return new Tn(new nt(1,1,1,1))}}class ne{constructor(e){this.value=e,this.type="value"}startGen(e){}genValue(e){return this.value}toJSON(){return{type:"ConstantValue",value:this.value}}static fromJSON(e){return new ne(e.value)}clone(){return new ne(this.value)}}class Mn{constructor(e,t){this.a=e,this.b=t,this.indexCount=-1,this.type="value"}startGen(e){this.indexCount=e.length,e.push(Math.random())}genValue(e){return this.indexCount===-1&&this.startGen(e),In.lerp(this.a,this.b,e[this.indexCount])}toJSON(){return{type:"IntervalValue",a:this.a,b:this.b}}static fromJSON(e){return new Mn(e.a,e.b)}clone(){return new Mn(this.a,this.b)}}class kh{constructor(){this.functions=new Array}findFunction(e){let t=0,n=0,i=this.functions.length-1;for(;n+1<i;)if(t=Math.floor((n+i)/2),e<this.getStartX(t))i=t-1;else if(e>this.getEndX(t))n=t+1;else return t;for(let s=n;s<=i;s++)if(e>=this.functions[s][1]&&e<=this.getEndX(s))return s;return-1}getStartX(e){return this.functions[e][1]}setStartX(e,t){e>0&&(this.functions[e][1]=t)}getEndX(e){return e+1<this.functions.length?this.functions[e+1][1]:1}setEndX(e,t){e+1<this.functions.length&&(this.functions[e+1][1]=t)}insertFunction(e,t){const n=this.findFunction(e);this.functions.splice(n+1,0,[t,e])}removeFunction(e){return this.functions.splice(e,1)[0][0]}getFunction(e){return this.functions[e][0]}setFunction(e,t){this.functions[e][0]=t}get numOfFunctions(){return this.functions.length}}class Mi extends kh{constructor(e=[[new _n(0,1/3,1/3*2,1),0]]){super(),this.type="function",this.functions=e}genValue(e,t=0){const n=this.findFunction(t);return n===-1?0:this.functions[n][0].genValue((t-this.getStartX(n))/(this.getEndX(n)-this.getStartX(n)))}toSVG(e,t){if(t<1)return"";let n=["M",0,this.functions[0][0].p[0]].join(" ");for(let i=1/t;i<=1;i+=1/t)n=[n,"L",i*e,this.genValue(void 0,i)].join(" ");return n}toJSON(){return{type:"PiecewiseBezier",functions:this.functions.map(([e,t])=>({function:e.toJSON(),start:t}))}}static fromJSON(e){return new Mi(e.functions.map(t=>[_n.fromJSON(t.function),t.start]))}clone(){return new Mi(this.functions.map(([e,t])=>[e.clone(),t]))}startGen(e){}}function $(r){switch(r.type){case"ConstantValue":return ne.fromJSON(r);case"IntervalValue":return Mn.fromJSON(r);case"PiecewiseBezier":return Mi.fromJSON(r);default:return new ne(0)}}class Ci{constructor(){this.indexCount=0,this.type="rotation"}startGen(e){this.indexCount=e.length,e.push(new re);let t,n,i,s,a,o;do t=Math.random()*2-1,n=Math.random()*2-1,i=t*t+n*n;while(i>1);do s=Math.random()*2-1,a=Math.random()*2-1,o=s*s+a*a;while(o>1);const c=Math.sqrt((1-i)/o);e[this.indexCount].set(t,n,c*s,c*a)}genValue(e,t,n,i){return this.indexCount===-1&&this.startGen(e),t.copy(e[this.indexCount]),t}toJSON(){return{type:"RandomQuat"}}static fromJSON(e){return new Ci}clone(){return new Ci}}class Ei{constructor(e,t){this.axis=e,this.angle=t,this.type="rotation"}startGen(e){this.angle.startGen(e)}genValue(e,t,n,i){return t.setFromAxisAngle(this.axis,this.angle.genValue(e,i)*n)}toJSON(){return{type:"AxisAngle",axis:{x:this.axis.x,y:this.axis.y,z:this.axis.z},angle:this.angle.toJSON()}}static fromJSON(e){return new Ei(new W(e.axis.x,e.axis.y,e.axis.z),$(e.angle))}clone(){return new Ei(this.axis.clone(),this.angle.clone())}}class es{constructor(e,t,n,i){this.angleX=e,this.angleY=t,this.angleZ=n,this.type="rotation",this.eular=new Ti(0,0,0,i)}startGen(e){this.angleX.startGen(e),this.angleY.startGen(e),this.angleZ.startGen(e)}genValue(e,t,n,i){return this.eular.set(this.angleX.genValue(e,i)*n,this.angleY.genValue(e,i)*n,this.angleZ.genValue(e,i)*n),t.setFromEuler(this.eular)}toJSON(){return{type:"Euler",angleX:this.angleX.toJSON(),angleY:this.angleY.toJSON(),angleZ:this.angleZ.toJSON(),eulerOrder:this.eular.order}}static fromJSON(e){return new es($(e.angleX),$(e.angleY),$(e.angleZ),e.eulerOrder)}clone(){return new es(this.angleX,this.angleY,this.angleZ,this.eular.order)}}function Lc(r){switch(r.type){case"AxisAngle":return Ei.fromJSON(r);case"Euler":return es.fromJSON(r);case"RandomQuat":return Ci.fromJSON(r);default:return new Ci}}class Cn{constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="vec3function"}startGen(e){this.x.startGen(e),this.y.startGen(e),this.z.startGen(e)}genValue(e,t,n){return t.set(this.x.genValue(e,n),this.y.genValue(e,n),this.z.genValue(e,n))}toJSON(){return{type:"Vector3Function",x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new Cn($(e.x),$(e.y),$(e.z))}clone(){return new Cn(this.x,this.y,this.z)}}function Rh(r){switch(r.type){case"Vector3Function":return Cn.fromJSON(r);default:return new Cn(new ne(0),new ne(0),new ne(0))}}function wr(r){switch(r.type){case"ConstantValue":case"IntervalValue":case"PiecewiseBezier":return $(r);case"AxisAngle":case"RandomQuat":case"Euler":return Lc(r);case"Vector3Function":return Rh(r);default:return new ne(0)}}class Pi{constructor(e={}){var t,n,i,s,a,o,c;this.type="cone",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.angle=(s=e.angle)!==null&&s!==void 0?s:Math.PI/6,this.mode=(a=e.mode)!==null&&a!==void 0?a:Ze.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ne(1),this.memory=[]}update(e,t){Ze.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=In.lerp(1-this.thickness,1,Math.random()),s=n*this.arc,a=Math.sqrt(i),o=Math.sin(s),c=Math.cos(s);e.position.x=a*c,e.position.y=a*o,e.position.z=0;const l=this.angle*a;e.velocity.set(0,0,Math.cos(l)).addScaledVector(e.position,Math.sin(l)).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius)}toJSON(){return{type:"cone",radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Pi({radius:e.radius,arc:e.arc,thickness:e.thickness,angle:e.angle,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new Pi({radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class ki{constructor(e={}){var t,n,i,s,a,o;this.type="circle",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:Ze.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[]}update(e,t){this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=In.lerp(1-this.thickness,1,Math.random()),s=n*this.arc;e.position.x=Math.cos(s),e.position.y=Math.sin(s),e.position.z=0,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*i)}toJSON(){return{type:"circle",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new ki({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new ki({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}function _r(r,e){return Math.floor(Math.random()*(e-r))+r}const Tr=new W(0,1,0),Mr=new W(0,0,0),Ah=new W(1,1,1),Fc=new W(0,0,1);class Ri{constructor(e={}){var t,n,i,s,a,o,c;this.type="donut",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.donutRadius=(s=e.donutRadius)!==null&&s!==void 0?s:this.radius*.2,this.mode=(a=e.mode)!==null&&a!==void 0?a:Ze.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ne(1),this.memory=[],this._m1=new At}update(e,t){Ze.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=In.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=i*Math.PI*2,c=Math.sin(a),l=Math.cos(a);e.position.x=this.radius*l,e.position.y=this.radius*c,e.position.z=0,e.velocity.z=this.donutRadius*s*Math.sin(o),e.velocity.x=this.donutRadius*s*Math.cos(o)*l,e.velocity.y=this.donutRadius*s*Math.cos(o)*c,e.position.add(e.velocity),e.velocity.normalize().multiplyScalar(e.startSpeed),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.velocity,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"donut",radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Ri({radius:e.radius,arc:e.arc,thickness:e.thickness,donutRadius:e.donutRadius,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new Ri({radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Ai{constructor(){this.type="point",this._m1=new At}update(e,t){}initialize(e){const t=Math.random(),n=Math.random(),i=t*Math.PI*2,s=Math.acos(2*n-1),a=Math.cbrt(Math.random()),o=Math.sin(i),c=Math.cos(i),l=Math.sin(s),u=Math.cos(s);e.velocity.x=a*l*c,e.velocity.y=a*l*o,e.velocity.z=a*u,e.velocity.multiplyScalar(e.startSpeed),e.position.setScalar(0),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"point"}}static fromJSON(e){return new Ai}clone(){return new Ai}}class qn{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:Ze.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[],this._m1=new At}update(e,t){Ze.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=In.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(2*i-1),c=Math.sin(a),l=Math.cos(a),u=Math.sin(o),p=Math.cos(o);e.position.x=u*l,e.position.y=u*c,e.position.z=p,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"sphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new qn({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new qn({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Oi{constructor(e={}){var t,n,i,s,a,o;this.type="sphere",this.currentValue=0,this.radius=(t=e.radius)!==null&&t!==void 0?t:10,this.arc=(n=e.arc)!==null&&n!==void 0?n:2*Math.PI,this.thickness=(i=e.thickness)!==null&&i!==void 0?i:1,this.mode=(s=e.mode)!==null&&s!==void 0?s:Ze.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ne(1),this.memory=[],this._m1=new At}update(e,t){Ze.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=oi(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=In.lerp(1-this.thickness,1,Math.random()),a=n*this.arc,o=Math.acos(i),c=Math.sin(a),l=Math.cos(a),u=Math.sin(o),p=Math.cos(o);e.position.x=u*l,e.position.y=u*c,e.position.z=p,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof re&&(this._m1.lookAt(Mr,e.position,Tr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"hemisphere",radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,spread:this.spread,speed:this.speed.toJSON()}}static fromJSON(e){return new Oi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?$(e.speed):void 0,spread:e.spread})}clone(){return new Oi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class Ii{constructor(e={}){var t,n,i,s;this.type="grid",this.width=(t=e.width)!==null&&t!==void 0?t:1,this.height=(n=e.height)!==null&&n!==void 0?n:1,this.column=(i=e.column)!==null&&i!==void 0?i:10,this.row=(s=e.row)!==null&&s!==void 0?s:10}initialize(e){const t=Math.floor(Math.random()*this.row),n=Math.floor(Math.random()*this.column);e.position.x=n*this.width/this.column-this.width/2,e.position.y=t*this.height/this.row-this.height/2,e.position.z=0,e.velocity.set(0,0,e.startSpeed)}toJSON(){return{type:"grid",width:this.width,height:this.height,column:this.column,row:this.row}}static fromJSON(e){return new Ii(e)}clone(){return new Ii({width:this.width,height:this.height,column:this.column,row:this.row})}update(e,t){}}const Gs={circle:{type:"circle",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:ki,loadJSON:ki.fromJSON},cone:{type:"cone",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Pi,loadJSON:Pi.fromJSON},donut:{type:"donut",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["donutRadius",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Ri,loadJSON:Ri.fromJSON},point:{type:"point",params:[],constructor:Ai,loadJSON:Ai.fromJSON},sphere:{type:"sphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:qn,loadJSON:qn.fromJSON},hemisphere:{type:"hemisphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:Oi,loadJSON:Oi.fromJSON},grid:{type:"grid",params:[["width",["number"]],["height",["number"]],["rows",["number"]],["column",["number"]]],constructor:Ii,loadJSON:Ii.fromJSON}};function Oh(r,e){return Gs[r.type].loadJSON(r,e)}class zi{constructor(e){this.color=e,this.type="ColorOverLife"}initialize(e){this.color.startGen(e.memory)}update(e,t){this.color.genColor(e.memory,e.color,e.age/e.life),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON()}}static fromJSON(e){return new zi(Js(e.color))}clone(){return new zi(this.color.clone())}reset(){}}class Bi{constructor(e){this.angularVelocity=e,this.type="RotationOverLife"}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){typeof e.rotation=="number"&&(e.rotation+=t*this.angularVelocity.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Bi($(e.angularVelocity))}frameUpdate(e){}clone(){return new Bi(this.angularVelocity.clone())}reset(){}}class Ni{constructor(e){this.angularVelocity=e,this.type="Rotation3DOverLife",this.tempQuat=new re,this.tempQuat2=new re}initialize(e){e.rotation instanceof re&&(e.angularVelocity=new re,this.angularVelocity.startGen(e.memory))}update(e,t){e.rotation instanceof re&&(this.angularVelocity.genValue(e.memory,this.tempQuat,t,e.age/e.life),e.rotation.multiply(this.tempQuat))}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON()}}static fromJSON(e){return new Ni(Lc(e.angularVelocity))}frameUpdate(e){}clone(){return new Ni(this.angularVelocity.clone())}reset(){}}class Ui{initialize(e,t){this.ps=t,this.x.startGen(e.memory),this.y.startGen(e.memory),this.z.startGen(e.memory)}constructor(e,t,n){this.x=e,this.y=t,this.z=n,this.type="ForceOverLife",this._temp=new W,this._tempScale=new W,this._tempQ=new re}update(e,t){this._temp.set(this.x.genValue(e.memory,e.age/e.life),this.y.genValue(e.memory,e.age/e.life),this.z.genValue(e.memory,e.age/e.life)),this.ps.worldSpace?e.velocity.addScaledVector(this._temp,t):(this._temp.multiply(this._tempScale).applyQuaternion(this._tempQ),e.velocity.addScaledVector(this._temp,t))}toJSON(){return{type:this.type,x:this.x.toJSON(),y:this.y.toJSON(),z:this.z.toJSON()}}static fromJSON(e){return new Ui($(e.x),$(e.y),$(e.z))}frameUpdate(e){if(this.ps&&!this.ps.worldSpace){const t=this._temp,n=this._tempQ,i=this._tempScale;this.ps.emitter.matrixWorld.decompose(t,n,i),n.invert(),i.set(1/i.x,1/i.y,1/i.z)}}clone(){return new Ui(this.x.clone(),this.y.clone(),this.z.clone())}reset(){}}class Di{initialize(e){this.size.startGen(e.memory)}constructor(e){this.size=e,this.type="SizeOverLife"}update(e){this.size instanceof Cn?this.size.genValue(e.memory,e.size,e.age/e.life).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,e.age/e.life))}toJSON(){return{type:this.type,size:this.size.toJSON()}}static fromJSON(e){return new Di(wr(e.size))}frameUpdate(e){}clone(){return new Di(this.size.clone())}reset(){}}class Li{initialize(e){this.speed.startGen(e.memory)}constructor(e){this.speed=e,this.type="SpeedOverLife"}update(e){e.speedModifier=this.speed.genValue(e.memory,e.age/e.life)}toJSON(){return{type:this.type,speed:this.speed.toJSON()}}static fromJSON(e){return new Li($(e.speed))}frameUpdate(e){}clone(){return new Li(this.speed.clone())}reset(){}}class Fi{constructor(e){this.frame=e,this.type="FrameOverLife"}initialize(e){this.frame.startGen(e.memory)}update(e,t){this.frame instanceof Mi&&(e.uvTile=this.frame.genValue(e.memory,e.age/e.life))}frameUpdate(e){}toJSON(){return{type:this.type,frame:this.frame.toJSON()}}static fromJSON(e){return new Fi($(e.frame))}clone(){return new Fi(this.frame.clone())}reset(){}}class Vi{constructor(e,t=new W(0,1,0)){this.orbitSpeed=e,this.axis=t,this.type="OrbitOverLife",this.temp=new W,this.rotation=new re}initialize(e){this.orbitSpeed.startGen(e.memory)}update(e,t){this.temp.copy(e.position).projectOnVector(this.axis),this.rotation.setFromAxisAngle(this.axis,this.orbitSpeed.genValue(e.memory,e.age/e.life)*t),e.position.sub(this.temp),e.position.applyQuaternion(this.rotation),e.position.add(this.temp)}frameUpdate(e){}toJSON(){return{type:this.type,orbitSpeed:this.orbitSpeed.toJSON(),axis:[this.axis.x,this.axis.y,this.axis.z]}}static fromJSON(e){return new Vi($(e.orbitSpeed),e.axis?new W(e.axis[0],e.axis[1],e.axis[2]):void 0)}clone(){return new Vi(this.orbitSpeed.clone())}reset(){}}class Ws{constructor(e){this.data=e,this.next=null,this.prev=null}hasPrev(){return this.prev!==null}hasNext(){return this.next!==null}}class Ih{constructor(){this.length=0,this.head=this.tail=null}isEmpty(){return this.head===null}clear(){this.length=0,this.head=this.tail=null}front(){return this.head===null?null:this.head.data}back(){return this.tail===null?null:this.tail.data}dequeue(){if(this.head){const e=this.head.data;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,e}}pop(){if(this.tail){const e=this.tail.data;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,e}}queue(e){const t=new Ws(e);this.tail||(this.tail=t),this.head&&(this.head.prev=t,t.next=this.head),this.head=t,this.length++}push(e){const t=new Ws(e);this.head||(this.head=t),this.tail&&(this.tail.next=t,t.prev=this.tail),this.tail=t,this.length++}insertBefore(e,t){const n=new Ws(t);n.next=e,n.prev=e.prev,n.prev!==null&&(n.prev.next=n),n.next.prev=n,e==this.head&&(this.head=n),this.length++}remove(e){if(this.head===null||this.tail===null)return;let t=this.head;for(e===this.head.data&&(this.head=this.head.next),e===this.tail.data&&(this.tail=this.tail.prev);t.next!==null&&t.data!==e;)t=t.next;t.data===e&&(t.prev!==null&&(t.prev.next=t.next),t.next!==null&&(t.next.prev=t.prev),this.length--)}*values(){let e=this.head;for(;e!==null;)yield e.data,e=e.next}}class zh{constructor(){this.startSpeed=0,this.startColor=new nt,this.startSize=new W(1,1,1),this.position=new W,this.velocity=new W,this.age=0,this.life=1,this.size=new W(1,1,1),this.speedModifier=1,this.rotation=0,this.color=new nt,this.uvTile=0,this.memory=[]}get died(){return this.age>=this.life}reset(){this.memory.length=0}}class Bh{constructor(e,t,n){this.position=e,this.size=t,this.color=n}}class Cr{constructor(){this.startSpeed=0,this.startColor=new nt,this.startSize=new W(1,1,1),this.position=new W,this.velocity=new W,this.age=0,this.life=1,this.size=new W(1,1,1),this.length=100,this.speedModifier=1,this.color=new nt,this.previous=new Ih,this.uvTile=0,this.memory=[]}update(){for(this.age<=this.life?this.previous.push(new Bh(this.position.clone(),this.size.x,this.color.clone())):this.previous.length>0&&this.previous.dequeue();this.previous.length>this.length;)this.previous.dequeue()}get died(){return this.age>=this.life}reset(){this.memory.length=0,this.previous.clear()}}class ji{initialize(e){this.width.startGen(e.memory)}constructor(e){this.width=e,this.type="WidthOverLength"}update(e){if(e instanceof Cr){const t=e.previous.values();for(let n=0;n<e.previous.length;n++){const i=t.next();i.value.size=this.width.genValue(e.memory,(e.previous.length-n)/e.length)}}}frameUpdate(e){}toJSON(){return{type:this.type,width:this.width.toJSON()}}static fromJSON(e){return new ji($(e.width))}clone(){return new ji(this.width.clone())}reset(){}}class Ji{constructor(e,t){this.direction=e,this.magnitude=t,this.type="ApplyForce",this.memory={data:[],dataCount:0},this.magnitudeValue=this.magnitude.genValue(this.memory)}initialize(e){}update(e,t){e.velocity.addScaledVector(this.direction,this.magnitudeValue*t)}frameUpdate(e){this.magnitudeValue=this.magnitude.genValue(this.memory)}toJSON(){return{type:this.type,direction:[this.direction.x,this.direction.y,this.direction.z],magnitude:this.magnitude.toJSON()}}static fromJSON(e){var t;return new Ji(new W(e.direction[0],e.direction[1],e.direction[2]),$((t=e.magnitude)!==null&&t!==void 0?t:e.force))}clone(){return new Ji(this.direction.clone(),this.magnitude.clone())}reset(){}}class Gi{constructor(e,t){this.center=e,this.magnitude=t,this.type="GravityForce",this.temp=new W}initialize(e){}update(e,t){this.temp.copy(this.center).sub(e.position).normalize(),e.velocity.addScaledVector(this.temp,this.magnitude/e.position.distanceToSquared(this.center)*t)}frameUpdate(e){}toJSON(){return{type:this.type,center:[this.center.x,this.center.y,this.center.z],magnitude:this.magnitude}}static fromJSON(e){return new Gi(new W(e.center[0],e.center[1],e.center[2]),e.magnitude)}clone(){return new Gi(this.center.clone(),this.magnitude)}reset(){}}class Wi{constructor(e){this.angle=e,this.type="ChangeEmitDirection",this._temp=new W,this._q=new re,this.memory={data:[],dataCount:0}}initialize(e){const t=e.velocity.length();t!=0&&(e.velocity.normalize(),e.velocity.x===0&&e.velocity.y===0?this._temp.set(0,e.velocity.z,0):this._temp.set(-e.velocity.y,e.velocity.x,0),this.angle.startGen(this.memory),this._q.setFromAxisAngle(this._temp.normalize(),this.angle.genValue(this.memory)),this._temp.copy(e.velocity),e.velocity.applyQuaternion(this._q),this._q.setFromAxisAngle(this._temp,Math.random()*Math.PI*2),e.velocity.applyQuaternion(this._q),e.velocity.setLength(t))}update(e,t){}frameUpdate(e){}toJSON(){return{type:this.type,angle:this.angle.toJSON()}}static fromJSON(e){return new Wi($(e.angle))}clone(){return new Wi(this.angle)}reset(){}}var Bn;(function(r){r[r.Death=0]="Death",r[r.Birth=1]="Birth",r[r.Frame=2]="Frame"})(Bn||(Bn={}));class Hi{constructor(e,t,n,i=Bn.Frame,s=1){this.particleSystem=e,this.useVelocityAsBasis=t,this.subParticleSystem=n,this.mode=i,this.emitProbability=s,this.type="EmitSubParticleSystem",this.q_=new re,this.v_=new W,this.v2_=new W,this.subEmissions=new Array,this.subParticleSystem&&this.subParticleSystem.system&&(this.subParticleSystem.system.onlyUsedByOther=!0)}initialize(e){}update(e,t){this.mode===Bn.Frame?this.emit(e,t):this.mode===Bn.Birth&&e.age===0?this.emit(e,t):this.mode===Bn.Death&&e.age+t>=e.life&&this.emit(e,t)}emit(e,t){if(!this.subParticleSystem||Math.random()>this.emitProbability)return;const n=new At;this.setMatrixFromParticle(n,e),this.subEmissions.push({burstParticleCount:0,burstParticleIndex:0,isBursting:!1,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,matrix:n,travelDistance:0,particle:e})}frameUpdate(e){if(this.subParticleSystem)for(let t=0;t<this.subEmissions.length;t++)if(this.subEmissions[t].time>=this.subParticleSystem.system.duration)this.subEmissions[t]=this.subEmissions[this.subEmissions.length-1],this.subEmissions.length=this.subEmissions.length-1,t--;else{const n=this.subEmissions[t];n.particle&&n.particle.age<n.particle.life?this.setMatrixFromParticle(n.matrix,n.particle):n.particle=void 0,this.subParticleSystem.system.emit(e,n,n.matrix)}}toJSON(){return{type:this.type,subParticleSystem:this.subParticleSystem?this.subParticleSystem.uuid:"",useVelocityAsBasis:this.useVelocityAsBasis,mode:this.mode,emitProbability:this.emitProbability}}static fromJSON(e,t){return new Hi(t,e.useVelocityAsBasis,e.subParticleSystem,e.mode,e.emitProbability)}clone(){return new Hi(this.particleSystem,this.useVelocityAsBasis,this.subParticleSystem,this.mode,this.emitProbability)}reset(){}setMatrixFromParticle(e,t){let n;if(t.rotation===void 0||this.useVelocityAsBasis)if(t.velocity.x===0&&t.velocity.y===0&&(t.velocity.z===1||t.velocity.z===0))e.set(1,0,0,t.position.x,0,1,0,t.position.y,0,0,1,t.position.z,0,0,0,1);else{this.v_.copy(Fc).cross(t.velocity),this.v2_.copy(t.velocity).cross(this.v_);const i=this.v_.length(),s=this.v2_.length();e.set(this.v_.x/i,this.v2_.x/s,t.velocity.x,t.position.x,this.v_.y/i,this.v2_.y/s,t.velocity.y,t.position.y,this.v_.z/i,this.v2_.z/s,t.velocity.z,t.position.z,0,0,0,1)}else t.rotation instanceof re?n=t.rotation:(this.q_.setFromAxisAngle(Fc,t.rotation),n=this.q_),e.compose(t.position,n,Ah);this.particleSystem.worldSpace||e.multiplyMatrices(this.particleSystem.emitter.matrixWorld,e)}}const Nh=.5*(Math.sqrt(3)-1),li=(3-Math.sqrt(3))/6,Uh=1/3,Ut=1/6,Dh=(Math.sqrt(5)-1)/4,Ue=(5-Math.sqrt(5))/20,Oe=new Float32Array([1,1,0,-1,1,0,1,-1,0,-1,-1,0,1,0,1,-1,0,1,1,0,-1,-1,0,-1,0,1,1,0,-1,1,0,1,-1,0,-1,-1]),Te=new Float32Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);class Vc{constructor(e=Math.random){const t=typeof e=="function"?e:Fh(e);this.p=Lh(t),this.perm=new Uint8Array(512),this.permMod12=new Uint8Array(512);for(let n=0;n<512;n++)this.perm[n]=this.p[n&255],this.permMod12[n]=this.perm[n]%12}noise2D(e,t){const n=this.permMod12,i=this.perm;let s=0,a=0,o=0;const c=(e+t)*Nh,l=Math.floor(e+c),u=Math.floor(t+c),p=(l+u)*li,m=l-p,f=u-p,x=e-m,w=t-f;let g,v;x>w?(g=1,v=0):(g=0,v=1);const _=x-g+li,S=w-v+li,T=x-1+2*li,M=w-1+2*li,E=l&255,P=u&255;let O=.5-x*x-w*w;if(O>=0){const B=n[E+i[P]]*3;O*=O,s=O*O*(Oe[B]*x+Oe[B+1]*w)}let R=.5-_*_-S*S;if(R>=0){const B=n[E+g+i[P+v]]*3;R*=R,a=R*R*(Oe[B]*_+Oe[B+1]*S)}let A=.5-T*T-M*M;if(A>=0){const B=n[E+1+i[P+1]]*3;A*=A,o=A*A*(Oe[B]*T+Oe[B+1]*M)}return 70*(s+a+o)}noise3D(e,t,n){const i=this.permMod12,s=this.perm;let a,o,c,l;const u=(e+t+n)*Uh,p=Math.floor(e+u),m=Math.floor(t+u),f=Math.floor(n+u),x=(p+m+f)*Ut,w=p-x,g=m-x,v=f-x,_=e-w,S=t-g,T=n-v;let M,E,P,O,R,A;_>=S?S>=T?(M=1,E=0,P=0,O=1,R=1,A=0):_>=T?(M=1,E=0,P=0,O=1,R=0,A=1):(M=0,E=0,P=1,O=1,R=0,A=1):S<T?(M=0,E=0,P=1,O=0,R=1,A=1):_<T?(M=0,E=1,P=0,O=0,R=1,A=1):(M=0,E=1,P=0,O=1,R=1,A=0);const B=_-M+Ut,I=S-E+Ut,U=T-P+Ut,L=_-O+2*Ut,j=S-R+2*Ut,H=T-A+2*Ut,Q=_-1+3*Ut,J=S-1+3*Ut,pe=T-1+3*Ut,ie=p&255,he=m&255,oe=f&255;let le=.6-_*_-S*S-T*T;if(le<0)a=0;else{const se=i[ie+s[he+s[oe]]]*3;le*=le,a=le*le*(Oe[se]*_+Oe[se+1]*S+Oe[se+2]*T)}let xe=.6-B*B-I*I-U*U;if(xe<0)o=0;else{const se=i[ie+M+s[he+E+s[oe+P]]]*3;xe*=xe,o=xe*xe*(Oe[se]*B+Oe[se+1]*I+Oe[se+2]*U)}let ge=.6-L*L-j*j-H*H;if(ge<0)c=0;else{const se=i[ie+O+s[he+R+s[oe+A]]]*3;ge*=ge,c=ge*ge*(Oe[se]*L+Oe[se+1]*j+Oe[se+2]*H)}let de=.6-Q*Q-J*J-pe*pe;if(de<0)l=0;else{const se=i[ie+1+s[he+1+s[oe+1]]]*3;de*=de,l=de*de*(Oe[se]*Q+Oe[se+1]*J+Oe[se+2]*pe)}return 32*(a+o+c+l)}noise4D(e,t,n,i){const s=this.perm;let a,o,c,l,u;const p=(e+t+n+i)*Dh,m=Math.floor(e+p),f=Math.floor(t+p),x=Math.floor(n+p),w=Math.floor(i+p),g=(m+f+x+w)*Ue,v=m-g,_=f-g,S=x-g,T=w-g,M=e-v,E=t-_,P=n-S,O=i-T;let R=0,A=0,B=0,I=0;M>E?R++:A++,M>P?R++:B++,M>O?R++:I++,E>P?A++:B++,E>O?A++:I++,P>O?B++:I++;const U=R>=3?1:0,L=A>=3?1:0,j=B>=3?1:0,H=I>=3?1:0,Q=R>=2?1:0,J=A>=2?1:0,pe=B>=2?1:0,ie=I>=2?1:0,he=R>=1?1:0,oe=A>=1?1:0,le=B>=1?1:0,xe=I>=1?1:0,ge=M-U+Ue,de=E-L+Ue,se=P-j+Ue,Ge=O-H+Ue,Ie=M-Q+2*Ue,Ee=E-J+2*Ue,it=P-pe+2*Ue,ze=O-ie+2*Ue,ve=M-he+3*Ue,ue=E-oe+3*Ue,lt=P-le+3*Ue,Pe=O-xe+3*Ue,fe=M-1+4*Ue,Ke=E-1+4*Ue,bt=P-1+4*Ue,xt=O-1+4*Ue,Qe=m&255,wt=f&255,ut=x&255,ht=w&255;let rt=.6-M*M-E*E-P*P-O*O;if(rt<0)a=0;else{const ee=s[Qe+s[wt+s[ut+s[ht]]]]%32*4;rt*=rt,a=rt*rt*(Te[ee]*M+Te[ee+1]*E+Te[ee+2]*P+Te[ee+3]*O)}let ke=.6-ge*ge-de*de-se*se-Ge*Ge;if(ke<0)o=0;else{const ee=s[Qe+U+s[wt+L+s[ut+j+s[ht+H]]]]%32*4;ke*=ke,o=ke*ke*(Te[ee]*ge+Te[ee+1]*de+Te[ee+2]*se+Te[ee+3]*Ge)}let We=.6-Ie*Ie-Ee*Ee-it*it-ze*ze;if(We<0)c=0;else{const ee=s[Qe+Q+s[wt+J+s[ut+pe+s[ht+ie]]]]%32*4;We*=We,c=We*We*(Te[ee]*Ie+Te[ee+1]*Ee+Te[ee+2]*it+Te[ee+3]*ze)}let st=.6-ve*ve-ue*ue-lt*lt-Pe*Pe;if(st<0)l=0;else{const ee=s[Qe+he+s[wt+oe+s[ut+le+s[ht+xe]]]]%32*4;st*=st,l=st*st*(Te[ee]*ve+Te[ee+1]*ue+Te[ee+2]*lt+Te[ee+3]*Pe)}let He=.6-fe*fe-Ke*Ke-bt*bt-xt*xt;if(He<0)u=0;else{const ee=s[Qe+1+s[wt+1+s[ut+1+s[ht+1]]]]%32*4;He*=He,u=He*He*(Te[ee]*fe+Te[ee+1]*Ke+Te[ee+2]*bt+Te[ee+3]*xt)}return 27*(a+o+c+l+u)}}function Lh(r){const e=new Uint8Array(256);for(let t=0;t<256;t++)e[t]=t;for(let t=0;t<255;t++){const n=t+~~(r()*(256-t)),i=e[t];e[t]=e[n],e[n]=i}return e}function Fh(r){let e=0,t=0,n=0,i=1;const s=Vh();return e=s(" "),t=s(" "),n=s(" "),e-=s(r),e<0&&(e+=1),t-=s(r),t<0&&(t+=1),n-=s(r),n<0&&(n+=1),function(){const a=2091639*e+i*23283064365386963e-26;return e=t,t=n,n=a-(i=a|0)}}function Vh(){let r=4022871197;return function(e){e=e.toString();for(let t=0;t<e.length;t++){r+=e.charCodeAt(t);let n=.02519603282416938*r;r=n>>>0,n-=r,n*=r,r=n>>>0,n-=r,r+=n*4294967296}return(r>>>0)*23283064365386963e-26}}class qi{constructor(e,t,n,i){this.scale=e,this.octaves=t,this.velocityMultiplier=n,this.timeScale=i,this.type="TurbulenceField",this.generator=new Vc,this.timeOffset=new W,this.temp=new W,this.temp2=new W,this.timeOffset.x=Math.random()/this.scale.x*this.timeScale.x,this.timeOffset.y=Math.random()/this.scale.y*this.timeScale.y,this.timeOffset.z=Math.random()/this.scale.z*this.timeScale.z}initialize(e){}update(e,t){const n=e.position.x/this.scale.x,i=e.position.y/this.scale.y,s=e.position.z/this.scale.z;this.temp.set(0,0,0);let a=1;for(let o=0;o<this.octaves;o++)this.temp2.set(this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.x*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.y*a)/a,this.generator.noise4D(n*a,i*a,s*a,this.timeOffset.z*a)/a),this.temp.add(this.temp2),a*=2;this.temp.multiply(this.velocityMultiplier),e.velocity.addScaledVector(this.temp,t)}toJSON(){return{type:this.type,scale:[this.scale.x,this.scale.y,this.scale.z],octaves:this.octaves,velocityMultiplier:[this.velocityMultiplier.x,this.velocityMultiplier.y,this.velocityMultiplier.z],timeScale:[this.timeScale.x,this.timeScale.y,this.timeScale.z]}}frameUpdate(e){this.timeOffset.x+=e*this.timeScale.x,this.timeOffset.y+=e*this.timeScale.y,this.timeOffset.z+=e*this.timeScale.z}static fromJSON(e){return new qi(new W(e.scale[0],e.scale[1],e.scale[2]),e.octaves,new W(e.velocityMultiplier[0],e.velocityMultiplier[1],e.velocityMultiplier[2]),new W(e.timeScale[0],e.timeScale[1],e.timeScale[2]))}clone(){return new qi(this.scale.clone(),this.octaves,this.velocityMultiplier.clone(),this.timeScale.clone())}reset(){}}const Dt=[],Hs=new W,qs=new re;class Xi{constructor(e,t,n=new ne(1),i=new ne(0)){if(this.frequency=e,this.power=t,this.positionAmount=n,this.rotationAmount=i,this.type="Noise",this.duration=0,Dt.length===0)for(let s=0;s<100;s++)Dt.push(new Vc)}initialize(e){e.lastPosNoise=new W,typeof e.rotation=="number"?e.lastRotNoise=0:e.lastRotNoise=new re,e.generatorIndex=[_r(0,100),_r(0,100),_r(0,100),_r(0,100)],this.positionAmount.startGen(e.memory),this.rotationAmount.startGen(e.memory),this.frequency.startGen(e.memory),this.power.startGen(e.memory)}update(e,t){let n=this.frequency.genValue(e.memory,e.age/e.life),i=this.power.genValue(e.memory,e.age/e.life),s=this.positionAmount.genValue(e.memory,e.age/e.life),a=this.rotationAmount.genValue(e.memory,e.age/e.life);s>0&&e.lastPosNoise!==void 0&&(e.position.sub(e.lastPosNoise),Hs.set(Dt[e.generatorIndex[0]].noise2D(0,e.age*n)*i*s,Dt[e.generatorIndex[1]].noise2D(0,e.age*n)*i*s,Dt[e.generatorIndex[2]].noise2D(0,e.age*n)*i*s),e.position.add(Hs),e.lastPosNoise.copy(Hs)),a>0&&e.lastRotNoise!==void 0&&(typeof e.rotation=="number"?(e.rotation-=e.lastRotNoise,e.rotation+=Dt[e.generatorIndex[3]].noise2D(0,e.age*n)*Math.PI*i*a):(e.lastRotNoise.invert(),e.rotation.multiply(e.lastRotNoise),qs.set(Dt[e.generatorIndex[0]].noise2D(0,e.age*n)*i*a,Dt[e.generatorIndex[1]].noise2D(0,e.age*n)*i*a,Dt[e.generatorIndex[2]].noise2D(0,e.age*n)*i*a,Dt[e.generatorIndex[3]].noise2D(0,e.age*n)*i*a).normalize(),e.rotation.multiply(qs),e.lastRotNoise.copy(qs)))}toJSON(){return{type:this.type,frequency:this.frequency.toJSON(),power:this.power.toJSON(),positionAmount:this.positionAmount.toJSON(),rotationAmount:this.rotationAmount.toJSON()}}frameUpdate(e){this.duration+=e}static fromJSON(e){return new Xi($(e.frequency),$(e.power),$(e.positionAmount),$(e.rotationAmount))}clone(){return new Xi(this.frequency.clone(),this.power.clone(),this.positionAmount.clone(),this.rotationAmount.clone())}reset(){}}class Yi{constructor(e,t){this.color=e,this.speedRange=t,this.type="ColorBySpeed"}initialize(e){this.color.startGen(e.memory)}update(e,t){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.color.genColor(e.memory,e.color,n),e.color.x*=e.startColor.x,e.color.y*=e.startColor.y,e.color.z*=e.startColor.z,e.color.w*=e.startColor.w}frameUpdate(e){}toJSON(){return{type:this.type,color:this.color.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Yi(Js(e.color),Mn.fromJSON(e.speedRange))}clone(){return new Yi(this.color.clone(),this.speedRange.clone())}reset(){}}class Zi{initialize(e){this.size.startGen(e.memory)}constructor(e,t){this.size=e,this.speedRange=t,this.type="SizeBySpeed"}update(e){const t=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);this.size instanceof Cn?this.size.genValue(e.memory,e.size,t).multiply(e.startSize):e.size.copy(e.startSize).multiplyScalar(this.size.genValue(e.memory,t))}toJSON(){return{type:this.type,size:this.size.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Zi(wr(e.size),Mn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Zi(this.size.clone(),this.speedRange.clone())}reset(){}}class Ki{constructor(e,t){this.angularVelocity=e,this.speedRange=t,this.type="RotationBySpeed",this.tempQuat=new re}initialize(e){typeof e.rotation=="number"&&this.angularVelocity.startGen(e.memory)}update(e,t){if(typeof e.rotation=="number"){const n=(e.startSpeed-this.speedRange.a)/(this.speedRange.b-this.speedRange.a);e.rotation+=t*this.angularVelocity.genValue(e.memory,n)}}toJSON(){return{type:this.type,angularVelocity:this.angularVelocity.toJSON(),speedRange:this.speedRange.toJSON()}}static fromJSON(e){return new Ki($(e.angularVelocity),Mn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Ki(this.angularVelocity.clone(),this.speedRange.clone())}reset(){}}class Qi{initialize(e){this.speed.startGen(e.memory)}constructor(e,t){this.speed=e,this.dampen=t,this.type="LimitSpeedOverLife"}update(e,t){let n=e.velocity.length(),i=this.speed.genValue(e.memory,e.age/e.life);if(n>i){const s=(n-i)/n;e.velocity.multiplyScalar(1-s*this.dampen*t*20)}}toJSON(){return{type:this.type,speed:this.speed.toJSON(),dampen:this.dampen}}static fromJSON(e){return new Qi($(e.speed),e.dampen)}frameUpdate(e){}clone(){return new Qi(this.speed.clone(),this.dampen)}reset(){}}const Er={ApplyForce:{type:"ApplyForce",constructor:Ji,params:[["direction",["vec3"]],["magnitude",["value"]]],loadJSON:Ji.fromJSON},Noise:{type:"Noise",constructor:Xi,params:[["frequency",["value"]],["power",["value"]],["positionAmount",["value"]],["rotationAmount",["value"]]],loadJSON:Xi.fromJSON},TurbulenceField:{type:"TurbulenceField",constructor:qi,params:[["scale",["vec3"]],["octaves",["number"]],["velocityMultiplier",["vec3"]],["timeScale",["vec3"]]],loadJSON:qi.fromJSON},GravityForce:{type:"GravityForce",constructor:Gi,params:[["center",["vec3"]],["magnitude",["number"]]],loadJSON:Gi.fromJSON},ColorOverLife:{type:"ColorOverLife",constructor:zi,params:[["color",["colorFunc"]]],loadJSON:zi.fromJSON},RotationOverLife:{type:"RotationOverLife",constructor:Bi,params:[["angularVelocity",["value","valueFunc"]]],loadJSON:Bi.fromJSON},Rotation3DOverLife:{type:"Rotation3DOverLife",constructor:Ni,params:[["angularVelocity",["rotationFunc"]]],loadJSON:Ni.fromJSON},SizeOverLife:{type:"SizeOverLife",constructor:Di,params:[["size",["value","valueFunc","vec3Func"]]],loadJSON:Di.fromJSON},ColorBySpeed:{type:"ColorBySpeed",constructor:Yi,params:[["color",["colorFunc"]],["speedRange",["range"]]],loadJSON:Yi.fromJSON},RotationBySpeed:{type:"RotationBySpeed",constructor:Ki,params:[["angularVelocity",["value","valueFunc"]],["speedRange",["range"]]],loadJSON:Ki.fromJSON},SizeBySpeed:{type:"SizeBySpeed",constructor:Zi,params:[["size",["value","valueFunc","vec3Func"]],["speedRange",["range"]]],loadJSON:Zi.fromJSON},SpeedOverLife:{type:"SpeedOverLife",constructor:Li,params:[["speed",["value","valueFunc"]]],loadJSON:Li.fromJSON},FrameOverLife:{type:"FrameOverLife",constructor:Fi,params:[["frame",["value","valueFunc"]]],loadJSON:Fi.fromJSON},ForceOverLife:{type:"ForceOverLife",constructor:Ui,params:[["x",["value","valueFunc"]],["y",["value","valueFunc"]],["z",["value","valueFunc"]]],loadJSON:Ui.fromJSON},OrbitOverLife:{type:"OrbitOverLife",constructor:Vi,params:[["orbitSpeed",["value","valueFunc"]],["axis",["vec3"]]],loadJSON:Vi.fromJSON},WidthOverLength:{type:"WidthOverLength",constructor:ji,params:[["width",["value","valueFunc"]]],loadJSON:ji.fromJSON},ChangeEmitDirection:{type:"ChangeEmitDirection",constructor:Wi,params:[["angle",["value"]]],loadJSON:Wi.fromJSON},EmitSubParticleSystem:{type:"EmitSubParticleSystem",constructor:Hi,params:[["particleSystem",["self"]],["useVelocityAsBasis",["boolean"]],["subParticleSystem",["particleSystem"]],["mode",["number"]],["emitProbability",["number"]]],loadJSON:Hi.fromJSON},LimitSpeedOverLife:{type:"LimitSpeedOverLife",constructor:Qi,params:[["speed",["value","valueFunc"]],["dampen",["number"]]],loadJSON:Qi.fromJSON}};function jh(r,e){return Er[r.type]?Er[r.type].loadJSON(r,e):null}const Jh=[];function Gh(r){if(!Jh.find(e=>e.id===r.id)){for(const e of r.emitterShapes)Gs[e.type]||(Gs[e.type]=e);for(const e of r.behaviors)Er[e.type]||(Er[e.type]=e)}}var Wh=`
84
79
  #ifdef SOFT_PARTICLES
85
80
 
86
81
  /* #ifdef LOGDEPTH
@@ -102,7 +97,7 @@ a=extmap-allow-mixed`)!==-1){const i=n.sdp.split(`
102
97
 
103
98
  //gl_FragColor = vec4(softParticlesFade , 0, 0, 1);
104
99
  #endif
105
- `,Jh=`
100
+ `,Hh=`
106
101
  #ifdef SOFT_PARTICLES
107
102
 
108
103
  uniform sampler2D depthTexture;
@@ -124,17 +119,17 @@ a=extmap-allow-mixed`)!==-1){const i=n.sdp.split(`
124
119
  }
125
120
 
126
121
  #endif
127
- `,Gh=`
122
+ `,qh=`
128
123
  #ifdef SOFT_PARTICLES
129
124
  varying vec4 projPosition;
130
125
  varying float linearDepth;
131
126
  #endif
132
- `,Wh=`
127
+ `,Xh=`
133
128
  #ifdef SOFT_PARTICLES
134
129
  projPosition = gl_Position;
135
130
  linearDepth = -mvPosition.z;
136
131
  #endif
137
- `,Hh=`
132
+ `,Yh=`
138
133
  #ifdef USE_MAP
139
134
  vec4 texelColor = texture2D( map, vUv);
140
135
  #ifdef TILE_BLEND
@@ -142,7 +137,7 @@ a=extmap-allow-mixed`)!==-1){const i=n.sdp.split(`
142
137
  #endif
143
138
  diffuseColor *= texelColor;
144
139
  #endif
145
- `,qh=`
140
+ `,Zh=`
146
141
  #if defined( USE_UV ) || defined( USE_ANISOTROPY )
147
142
 
148
143
  varying vec2 vUv;
@@ -293,7 +288,7 @@ a=extmap-allow-mixed`)!==-1){const i=n.sdp.split(`
293
288
  varying vec2 vThicknessMapUv;
294
289
 
295
290
  #endif
296
- `,Xh=`
291
+ `,Kh=`
297
292
  #ifdef UV_TILE
298
293
  attribute float uvTile;
299
294
  uniform vec2 tileCount;
@@ -463,7 +458,7 @@ a=extmap-allow-mixed`)!==-1){const i=n.sdp.split(`
463
458
  varying vec2 vThicknessMapUv;
464
459
 
465
460
  #endif
466
- `,Yh=`
461
+ `,Qh=`
467
462
  #ifdef UV_TILE
468
463
  mat3 tileTransform = makeTileTransform(floor(uvTile));
469
464
  #ifdef TILE_BLEND
@@ -601,7 +596,7 @@ vThicknessMapUv = ( tileTransform * thicknessMapTransform * vec3( THICKNESSMAP_U
601
596
 
602
597
  #endif
603
598
 
604
- `;const rn=Ll;function Zh(){rn.tile_pars_vertex=Xh,rn.tile_vertex=Yh,rn.tile_pars_fragment=qh,rn.tile_fragment=Hh,rn.soft_pars_vertex=Gh,rn.soft_vertex=Wh,rn.soft_pars_fragment=Jh,rn.soft_fragment=jh}class Kh extends Ko{constructor(e){super(),this.type="ParticleEmitter",this.system=e}clone(){const e=this.system.clone();return e.emitter.copy(this,!0),e.emitter}dispose(){}extractFromCache(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}toJSON(e,t={}){const n=this.children;this.children=this.children.filter(s=>s.type!=="ParticleSystemPreview");const i=super.toJSON(e);return this.children=n,this.system!==null&&(i.object.ps=this.system.toJSON(e,t)),i}}var V;(function(r){r[r.BillBoard=0]="BillBoard",r[r.StretchedBillBoard=1]="StretchedBillBoard",r[r.Mesh=2]="Mesh",r[r.Trail=3]="Trail",r[r.HorizontalBillBoard=4]="HorizontalBillBoard",r[r.VerticalBillBoard=5]="VerticalBillBoard"})(V||(V={}));class jc extends gs{constructor(e){super(),this.type="VFXBatch",this.maxParticles=1e3,this.systems=new Set;const t=new ar;t.mask=e.layers.mask;const n=e.material.clone();n.defines={},Object.assign(n.defines,e.material.defines),this.settings={instancingGeometry:e.instancingGeometry,renderMode:e.renderMode,renderOrder:e.renderOrder,material:n,uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softNearFade:e.softNearFade,softFarFade:e.softFarFade,layers:t},this.frustumCulled=!1,this.renderOrder=this.settings.renderOrder}addSystem(e){this.systems.add(e)}removeSystem(e){this.systems.delete(e)}applyDepthTexture(e){const t=this.material.uniforms.depthTexture;t&&t.value!==e&&(t.value=e,this.material.needsUpdate=!0)}}const Qh=new W(0,0,1),Xs=new re,$h=new W,ed=new W;new W;const Jc=60,td=new Zo(1,1,1,1);class ts{set time(e){this.emissionState.time=e}get time(){return this.emissionState.time}get layers(){return this.rendererSettings.layers}get texture(){return this.rendererSettings.material.map}set texture(e){this.rendererSettings.material.map=e,this.neededToUpdateRender=!0}get material(){return this.rendererSettings.material}set material(e){this.rendererSettings.material=e,this.neededToUpdateRender=!0}get uTileCount(){return this.rendererSettings.uTileCount}set uTileCount(e){this.rendererSettings.uTileCount=e,this.neededToUpdateRender=!0}get vTileCount(){return this.rendererSettings.vTileCount}set vTileCount(e){this.rendererSettings.vTileCount=e,this.neededToUpdateRender=!0}get blendTiles(){return this.rendererSettings.blendTiles}set blendTiles(e){this.rendererSettings.blendTiles=e,this.neededToUpdateRender=!0}get softParticles(){return this.rendererSettings.softParticles}set softParticles(e){this.rendererSettings.softParticles=e,this.neededToUpdateRender=!0}get softNearFade(){return this.rendererSettings.softNearFade}set softNearFade(e){this.rendererSettings.softNearFade=e,this.neededToUpdateRender=!0}get softFarFade(){return this.rendererSettings.softFarFade}set softFarFade(e){this.rendererSettings.softFarFade=e,this.neededToUpdateRender=!0}get instancingGeometry(){return this.rendererSettings.instancingGeometry}set instancingGeometry(e){this.restart(),this.particles.length=0,this.rendererSettings.instancingGeometry=e,this.neededToUpdateRender=!0}get renderMode(){return this.rendererSettings.renderMode}set renderMode(e){if((this.rendererSettings.renderMode!=V.Trail&&e===V.Trail||this.rendererSettings.renderMode==V.Trail&&e!==V.Trail)&&(this.restart(),this.particles.length=0),this.rendererSettings.renderMode!==e)switch(e){case V.Trail:this.rendererEmitterSettings={startLength:new ne(30),followLocalOrigin:!1};break;case V.Mesh:this.rendererEmitterSettings={geometry:new Zo(1,1)},this.startRotation=new Ei(new W(0,1,0),new ne(0));break;case V.StretchedBillBoard:this.rendererEmitterSettings={speedFactor:0,lengthFactor:2},this.rendererSettings.renderMode===V.Mesh&&(this.startRotation=new ne(0));break;case V.BillBoard:case V.VerticalBillBoard:case V.HorizontalBillBoard:this.rendererEmitterSettings={},this.rendererSettings.renderMode===V.Mesh&&(this.startRotation=new ne(0));break}this.rendererSettings.renderMode=e,this.neededToUpdateRender=!0}get renderOrder(){return this.rendererSettings.renderOrder}set renderOrder(e){this.rendererSettings.renderOrder=e,this.neededToUpdateRender=!0}get blending(){return this.rendererSettings.material.blending}set blending(e){this.rendererSettings.material.blending=e,this.neededToUpdateRender=!0}constructor(e){var t,n,i,s,a,o,c,l,u,p,m,f,x,w,g,v,_,S,M,T,E,P,z,R,A,B;if(this.temp=new W,this.travelDistance=0,this.normalMatrix=new Lt,this.memory=[],this.listeners={},this.firstTimeUpdate=!0,this.autoDestroy=e.autoDestroy===void 0?!1:e.autoDestroy,this.duration=(t=e.duration)!==null&&t!==void 0?t:1,this.looping=e.looping===void 0?!0:e.looping,this.prewarm=e.prewarm===void 0?!1:e.prewarm,this.startLife=(n=e.startLife)!==null&&n!==void 0?n:new ne(5),this.startSpeed=(i=e.startSpeed)!==null&&i!==void 0?i:new ne(0),this.startRotation=(s=e.startRotation)!==null&&s!==void 0?s:new ne(0),this.startSize=(a=e.startSize)!==null&&a!==void 0?a:new ne(1),this.startColor=(o=e.startColor)!==null&&o!==void 0?o:new Mn(new nt(1,1,1,1)),this.emissionOverTime=(c=e.emissionOverTime)!==null&&c!==void 0?c:new ne(10),this.emissionOverDistance=(l=e.emissionOverDistance)!==null&&l!==void 0?l:new ne(0),this.emissionBursts=(u=e.emissionBursts)!==null&&u!==void 0?u:[],this.onlyUsedByOther=(p=e.onlyUsedByOther)!==null&&p!==void 0?p:!1,this.emitterShape=(m=e.shape)!==null&&m!==void 0?m:new qn,this.behaviors=(f=e.behaviors)!==null&&f!==void 0?f:new Array,this.worldSpace=(x=e.worldSpace)!==null&&x!==void 0?x:!1,this.rendererEmitterSettings=(w=e.rendererEmitterSettings)!==null&&w!==void 0?w:{},e.renderMode===V.StretchedBillBoard){const O=this.rendererEmitterSettings;e.speedFactor!==void 0&&(O.speedFactor=e.speedFactor),O.speedFactor=(g=O.speedFactor)!==null&&g!==void 0?g:0,O.lengthFactor=(v=O.lengthFactor)!==null&&v!==void 0?v:0}this.rendererSettings={instancingGeometry:(_=e.instancingGeometry)!==null&&_!==void 0?_:td,renderMode:(S=e.renderMode)!==null&&S!==void 0?S:V.BillBoard,renderOrder:(M=e.renderOrder)!==null&&M!==void 0?M:0,material:e.material,uTileCount:(T=e.uTileCount)!==null&&T!==void 0?T:1,vTileCount:(E=e.vTileCount)!==null&&E!==void 0?E:1,blendTiles:(P=e.blendTiles)!==null&&P!==void 0?P:!1,softParticles:(z=e.softParticles)!==null&&z!==void 0?z:!1,softNearFade:(R=e.softNearFade)!==null&&R!==void 0?R:0,softFarFade:(A=e.softFarFade)!==null&&A!==void 0?A:0,layers:(B=e.layers)!==null&&B!==void 0?B:new ar},this.neededToUpdateRender=!0,this.particles=new Array,this.startTileIndex=e.startTileIndex||new ne(0),this.emitter=new Kh(this),this.paused=!1,this.particleNum=0,this.emissionState={isBursting:!1,burstParticleIndex:0,burstParticleCount:0,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,travelDistance:0},this.emissionBursts.forEach(O=>O.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1}pause(){this.paused=!0}play(){this.paused=!1}stop(){this.restart(),this.pause()}spawn(e,t,n){Xs.setFromRotationMatrix(n);const i=$h,s=Xs,a=ed;n.decompose(i,s,a);for(let o=0;o<e;o++){for(t.burstParticleIndex=o,this.particleNum++;this.particles.length<this.particleNum;)this.rendererSettings.renderMode===V.Trail?this.particles.push(new Cr):this.particles.push(new Ah);const c=this.particles[this.particleNum-1];if(c.reset(),c.speedModifier=1,this.startColor.startGen(c.memory),this.startColor.genColor(c.memory,c.startColor,this.emissionState.time),c.color.copy(c.startColor),this.startSpeed.startGen(c.memory),c.startSpeed=this.startSpeed.genValue(c.memory,t.time/this.duration),this.startLife.startGen(c.memory),c.life=this.startLife.genValue(c.memory,t.time/this.duration),c.age=0,this.startSize.startGen(c.memory),this.startSize.type==="vec3function")this.startSize.genValue(c.memory,c.startSize,t.time/this.duration);else{const l=this.startSize.genValue(c.memory,t.time/this.duration);c.startSize.set(l,l,l)}if(this.startTileIndex.startGen(c.memory),c.uvTile=this.startTileIndex.genValue(c.memory),c.size.copy(c.startSize),this.rendererSettings.renderMode===V.Mesh||this.rendererSettings.renderMode===V.BillBoard||this.rendererSettings.renderMode===V.VerticalBillBoard||this.rendererSettings.renderMode===V.HorizontalBillBoard||this.rendererSettings.renderMode===V.StretchedBillBoard){const l=c;this.startRotation.startGen(c.memory),this.rendererSettings.renderMode===V.Mesh?(l.rotation instanceof re||(l.rotation=new re),this.startRotation.type==="rotation"?this.startRotation.genValue(c.memory,l.rotation,1,t.time/this.duration):l.rotation.setFromAxisAngle(Qh,this.startRotation.genValue(l.memory,t.time/this.duration))):this.startRotation.type==="rotation"?l.rotation=0:l.rotation=this.startRotation.genValue(l.memory,t.time/this.duration)}else if(this.rendererSettings.renderMode===V.Trail){const l=c;this.rendererEmitterSettings.startLength.startGen(l.memory),l.length=this.rendererEmitterSettings.startLength.genValue(l.memory,t.time/this.duration)}if(this.emitterShape.initialize(c,t),this.rendererSettings.renderMode===V.Trail&&this.rendererEmitterSettings.followLocalOrigin){const l=c;l.localPosition=new W().copy(l.position)}this.worldSpace?(c.position.applyMatrix4(n),c.startSize.multiply(a).abs(),c.size.copy(c.startSize),c.velocity.multiply(a).applyMatrix3(this.normalMatrix),c.rotation&&c.rotation instanceof re&&c.rotation.multiplyQuaternions(Xs,c.rotation)):this.onlyUsedByOther&&(c.parentMatrix=n);for(let l=0;l<this.behaviors.length;l++)this.behaviors[l].initialize(c,this)}}endEmit(){this.emitEnded=!0,this.autoDestroy&&(this.markForDestroy=!0),this.fire({type:"emitEnd",particleSystem:this})}dispose(){this._renderer&&this._renderer.deleteSystem(this),this.emitter.dispose(),this.emitter.parent&&this.emitter.parent.remove(this.emitter),this.fire({type:"destroy",particleSystem:this})}restart(){this.memory.length=0,this.paused=!1,this.particleNum=0,this.emissionState.isBursting=!1,this.emissionState.burstIndex=0,this.emissionState.burstWaveIndex=0,this.emissionState.time=0,this.emissionState.waitEmiting=0,this.behaviors.forEach(e=>{e.reset()}),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1,this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory)}update(e){if(this.paused)return;let t=this.emitter;for(;t.parent;)t=t.parent;if(t.type!=="Scene"){this.dispose();return}if(this.firstTimeUpdate&&(this.firstTimeUpdate=!1,this.emitter.updateWorldMatrix(!0,!1)),this.emitEnded&&this.particleNum===0){this.markForDestroy&&this.emitter.parent&&this.dispose();return}if(this.looping&&this.prewarm&&!this.prewarmed){this.prewarmed=!0;for(let n=0;n<this.duration*Jc;n++)this.update(1/Jc)}e>.1&&(e=.1),this.neededToUpdateRender&&(this._renderer&&this._renderer.updateSystem(this),this.neededToUpdateRender=!1),this.onlyUsedByOther||this.emit(e,this.emissionState,this.emitter.matrixWorld),this.emitterShape.update(this,e);for(let n=0;n<this.behaviors.length;n++){this.behaviors[n].frameUpdate(e);for(let i=0;i<this.particleNum;i++)this.particles[i].died||this.behaviors[n].update(this.particles[i],e)}for(let n=0;n<this.particleNum;n++)this.rendererEmitterSettings.followLocalOrigin&&this.particles[n].localPosition?(this.particles[n].position.copy(this.particles[n].localPosition),this.particles[n].parentMatrix?this.particles[n].position.applyMatrix4(this.particles[n].parentMatrix):this.particles[n].position.applyMatrix4(this.emitter.matrixWorld)):this.particles[n].position.addScaledVector(this.particles[n].velocity,e*this.particles[n].speedModifier),this.particles[n].age+=e;if(this.rendererSettings.renderMode===V.Trail)for(let n=0;n<this.particleNum;n++)this.particles[n].update();for(let n=0;n<this.particleNum;n++){const i=this.particles[n];i.died&&(!(i instanceof Cr)||i.previous.length===0)&&(this.particles[n]=this.particles[this.particleNum-1],this.particles[this.particleNum-1]=i,this.particleNum--,n--,this.fire({type:"particleDied",particleSystem:this,particle:i}))}}emit(e,t,n){t.time>this.duration&&(this.looping?(t.time-=this.duration,t.burstIndex=0,this.behaviors.forEach(s=>{s.reset()})):!this.emitEnded&&!this.onlyUsedByOther&&this.endEmit()),this.normalMatrix.getNormalMatrix(n);const i=Math.ceil(t.waitEmiting);for(this.spawn(i,t,n),t.waitEmiting-=i;t.burstIndex<this.emissionBursts.length&&this.emissionBursts[t.burstIndex].time<=t.time;){if(Math.random()<this.emissionBursts[t.burstIndex].probability){const s=this.emissionBursts[t.burstIndex].count.genValue(this.memory,this.time);t.isBursting=!0,t.burstParticleCount=s,this.spawn(s,t,n),t.isBursting=!1}t.burstIndex++}if(!this.emitEnded&&(t.waitEmiting+=e*this.emissionOverTime.genValue(this.memory,t.time/this.duration),t.previousWorldPos!=null)){this.temp.set(n.elements[12],n.elements[13],n.elements[14]),t.travelDistance+=t.previousWorldPos.distanceTo(this.temp);const s=this.emissionOverDistance.genValue(this.memory,t.time/this.duration);if(t.travelDistance*s>0){const a=Math.floor(t.travelDistance*s);t.travelDistance-=a/s,t.waitEmiting+=a}}t.previousWorldPos===void 0&&(t.previousWorldPos=new W),t.previousWorldPos.set(n.elements[12],n.elements[13],n.elements[14]),t.time+=e}toJSON(e,t={}){var n;if((e===void 0||typeof e=="string")&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}}),e.materials[this.rendererSettings.material.uuid]=this.rendererSettings.material.toJSON(e),t.useUrlForImage&&((n=this.texture)===null||n===void 0?void 0:n.source)!==void 0){const a=this.texture.source;e.images[a.uuid]={uuid:a.uuid,url:this.texture.image.url}}let i;this.renderMode===V.Trail?i={startLength:this.rendererEmitterSettings.startLength.toJSON(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===V.Mesh?i={}:this.renderMode===V.StretchedBillBoard?i={speedFactor:this.rendererEmitterSettings.speedFactor,lengthFactor:this.rendererEmitterSettings.lengthFactor}:i={};const s=this.rendererSettings.instancingGeometry;return e.geometries&&!e.geometries[s.uuid]&&(e.geometries[s.uuid]=s.toJSON()),{version:"3.0",autoDestroy:this.autoDestroy,looping:this.looping,prewarm:this.prewarm,duration:this.duration,shape:this.emitterShape.toJSON(),startLife:this.startLife.toJSON(),startSpeed:this.startSpeed.toJSON(),startRotation:this.startRotation.toJSON(),startSize:this.startSize.toJSON(),startColor:this.startColor.toJSON(),emissionOverTime:this.emissionOverTime.toJSON(),emissionOverDistance:this.emissionOverDistance.toJSON(),emissionBursts:this.emissionBursts.map(a=>({time:a.time,count:a.count.toJSON(),probability:a.probability,interval:a.interval,cycle:a.cycle})),onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry.uuid,renderOrder:this.renderOrder,renderMode:this.renderMode,rendererEmitterSettings:i,material:this.rendererSettings.material.uuid,layers:this.layers.mask,startTileIndex:this.startTileIndex.toJSON(),uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.rendererSettings.softParticles,softFarFade:this.rendererSettings.softFarFade,softNearFade:this.rendererSettings.softNearFade,behaviors:this.behaviors.map(a=>a.toJSON()),worldSpace:this.worldSpace}}static fromJSON(e,t,n){var i,s;const a=kh(e.shape,t);let o;if(e.renderMode===V.Trail){const u=e.rendererEmitterSettings;o={startLength:u.startLength!=null?$(u.startLength):new ne(30),followLocalOrigin:u.followLocalOrigin}}else e.renderMode===V.Mesh?o={}:e.renderMode===V.StretchedBillBoard?(o=e.rendererEmitterSettings,e.speedFactor!=null&&(o.speedFactor=e.speedFactor)):o={};const c=new ar;e.layers&&(c.mask=e.layers);const l=new ts({autoDestroy:e.autoDestroy,looping:e.looping,prewarm:e.prewarm,duration:e.duration,shape:a,startLife:$(e.startLife),startSpeed:$(e.startSpeed),startRotation:wr(e.startRotation),startSize:wr(e.startSize),startColor:Js(e.startColor),emissionOverTime:$(e.emissionOverTime),emissionOverDistance:$(e.emissionOverDistance),emissionBursts:(i=e.emissionBursts)===null||i===void 0?void 0:i.map(u=>{var p,m,f;return{time:u.time,count:typeof u.count=="number"?new ne(u.count):$(u.count),probability:(p=u.probability)!==null&&p!==void 0?p:1,interval:(m=u.interval)!==null&&m!==void 0?m:.1,cycle:(f=u.cycle)!==null&&f!==void 0?f:1}}),onlyUsedByOther:e.onlyUsedByOther,instancingGeometry:t.geometries[e.instancingGeometry],renderMode:e.renderMode,rendererEmitterSettings:o,renderOrder:e.renderOrder,layers:c,material:e.material?t.materials[e.material]:e.texture?new Qo({map:t.textures[e.texture],transparent:(s=e.transparent)!==null&&s!==void 0?s:!0,blending:e.blending,side:ms}):new Qo({color:16777215,transparent:!0,blending:$o,side:ms}),startTileIndex:typeof e.startTileIndex=="number"?new ne(e.startTileIndex):$(e.startTileIndex),uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softFarFade:e.softFarFade,softNearFade:e.softNearFade,behaviors:[],worldSpace:e.worldSpace});return l.behaviors=e.behaviors.map(u=>{const p=Lh(u,l);return p.type==="EmitSubParticleSystem"&&(n[u.subParticleSystem]=p),p}),l}addBehavior(e){this.behaviors.push(e)}getRendererSettings(){return this.rendererSettings}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeAllEventListeners(e){this.listeners[e]&&(this.listeners[e]=[])}removeEventListener(e,t){if(this.listeners[e]){const n=this.listeners[e].indexOf(t);n!==-1&&this.listeners[e].splice(n,1)}}fire(e){this.listeners[e.type]&&this.listeners[e.type].forEach(t=>t(e))}clone(){const e=[];for(const s of this.emissionBursts){const a={};Object.assign(a,s),e.push(a)}const t=[];for(const s of this.behaviors)t.push(s.clone());let n;this.renderMode===V.Trail?n={startLength:this.rendererEmitterSettings.startLength.clone(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===V.StretchedBillBoard?n={lengthFactor:this.rendererEmitterSettings.lengthFactor,speedFactor:this.rendererEmitterSettings.speedFactor}:n={};const i=new ar;return i.mask=this.layers.mask,new ts({autoDestroy:this.autoDestroy,looping:this.looping,duration:this.duration,shape:this.emitterShape.clone(),startLife:this.startLife.clone(),startSpeed:this.startSpeed.clone(),startRotation:this.startRotation.clone(),startSize:this.startSize.clone(),startColor:this.startColor.clone(),emissionOverTime:this.emissionOverTime.clone(),emissionOverDistance:this.emissionOverDistance.clone(),emissionBursts:e,onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry,renderMode:this.renderMode,renderOrder:this.renderOrder,rendererEmitterSettings:n,material:this.rendererSettings.material,startTileIndex:this.startTileIndex,uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.softParticles,softFarFade:this.softFarFade,softNearFade:this.softNearFade,behaviors:t,worldSpace:this.worldSpace,layers:i})}}var Ys=`
599
+ `;const rn=jl;function $h(){rn.tile_pars_vertex=Kh,rn.tile_vertex=Qh,rn.tile_pars_fragment=Zh,rn.tile_fragment=Yh,rn.soft_pars_vertex=qh,rn.soft_vertex=Xh,rn.soft_pars_fragment=Hh,rn.soft_fragment=Wh}class ed extends Ko{constructor(e){super(),this.type="ParticleEmitter",this.system=e}clone(){const e=this.system.clone();return e.emitter.copy(this,!0),e.emitter}dispose(){}extractFromCache(e){const t=[];for(const n in e){const i=e[n];delete i.metadata,t.push(i)}return t}toJSON(e,t={}){const n=this.children;this.children=this.children.filter(s=>s.type!=="ParticleSystemPreview");const i=super.toJSON(e);return this.children=n,this.system!==null&&(i.object.ps=this.system.toJSON(e,t)),i}}var V;(function(r){r[r.BillBoard=0]="BillBoard",r[r.StretchedBillBoard=1]="StretchedBillBoard",r[r.Mesh=2]="Mesh",r[r.Trail=3]="Trail",r[r.HorizontalBillBoard=4]="HorizontalBillBoard",r[r.VerticalBillBoard=5]="VerticalBillBoard"})(V||(V={}));class jc extends gs{constructor(e){super(),this.type="VFXBatch",this.maxParticles=1e3,this.systems=new Set;const t=new ar;t.mask=e.layers.mask;const n=e.material.clone();n.defines={},Object.assign(n.defines,e.material.defines),this.settings={instancingGeometry:e.instancingGeometry,renderMode:e.renderMode,renderOrder:e.renderOrder,material:n,uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softNearFade:e.softNearFade,softFarFade:e.softFarFade,layers:t},this.frustumCulled=!1,this.renderOrder=this.settings.renderOrder}addSystem(e){this.systems.add(e)}removeSystem(e){this.systems.delete(e)}applyDepthTexture(e){const t=this.material.uniforms.depthTexture;t&&t.value!==e&&(t.value=e,this.material.needsUpdate=!0)}}const td=new W(0,0,1),Xs=new re,nd=new W,id=new W;new W;const Jc=60,rd=new Zo(1,1,1,1);class ts{set time(e){this.emissionState.time=e}get time(){return this.emissionState.time}get layers(){return this.rendererSettings.layers}get texture(){return this.rendererSettings.material.map}set texture(e){this.rendererSettings.material.map=e,this.neededToUpdateRender=!0}get material(){return this.rendererSettings.material}set material(e){this.rendererSettings.material=e,this.neededToUpdateRender=!0}get uTileCount(){return this.rendererSettings.uTileCount}set uTileCount(e){this.rendererSettings.uTileCount=e,this.neededToUpdateRender=!0}get vTileCount(){return this.rendererSettings.vTileCount}set vTileCount(e){this.rendererSettings.vTileCount=e,this.neededToUpdateRender=!0}get blendTiles(){return this.rendererSettings.blendTiles}set blendTiles(e){this.rendererSettings.blendTiles=e,this.neededToUpdateRender=!0}get softParticles(){return this.rendererSettings.softParticles}set softParticles(e){this.rendererSettings.softParticles=e,this.neededToUpdateRender=!0}get softNearFade(){return this.rendererSettings.softNearFade}set softNearFade(e){this.rendererSettings.softNearFade=e,this.neededToUpdateRender=!0}get softFarFade(){return this.rendererSettings.softFarFade}set softFarFade(e){this.rendererSettings.softFarFade=e,this.neededToUpdateRender=!0}get instancingGeometry(){return this.rendererSettings.instancingGeometry}set instancingGeometry(e){this.restart(),this.particles.length=0,this.rendererSettings.instancingGeometry=e,this.neededToUpdateRender=!0}get renderMode(){return this.rendererSettings.renderMode}set renderMode(e){if((this.rendererSettings.renderMode!=V.Trail&&e===V.Trail||this.rendererSettings.renderMode==V.Trail&&e!==V.Trail)&&(this.restart(),this.particles.length=0),this.rendererSettings.renderMode!==e)switch(e){case V.Trail:this.rendererEmitterSettings={startLength:new ne(30),followLocalOrigin:!1};break;case V.Mesh:this.rendererEmitterSettings={geometry:new Zo(1,1)},this.startRotation=new Ei(new W(0,1,0),new ne(0));break;case V.StretchedBillBoard:this.rendererEmitterSettings={speedFactor:0,lengthFactor:2},this.rendererSettings.renderMode===V.Mesh&&(this.startRotation=new ne(0));break;case V.BillBoard:case V.VerticalBillBoard:case V.HorizontalBillBoard:this.rendererEmitterSettings={},this.rendererSettings.renderMode===V.Mesh&&(this.startRotation=new ne(0));break}this.rendererSettings.renderMode=e,this.neededToUpdateRender=!0}get renderOrder(){return this.rendererSettings.renderOrder}set renderOrder(e){this.rendererSettings.renderOrder=e,this.neededToUpdateRender=!0}get blending(){return this.rendererSettings.material.blending}set blending(e){this.rendererSettings.material.blending=e,this.neededToUpdateRender=!0}constructor(e){var t,n,i,s,a,o,c,l,u,p,m,f,x,w,g,v,_,S,T,M,E,P,O,R,A,B;if(this.temp=new W,this.travelDistance=0,this.normalMatrix=new Lt,this.memory=[],this.listeners={},this.firstTimeUpdate=!0,this.autoDestroy=e.autoDestroy===void 0?!1:e.autoDestroy,this.duration=(t=e.duration)!==null&&t!==void 0?t:1,this.looping=e.looping===void 0?!0:e.looping,this.prewarm=e.prewarm===void 0?!1:e.prewarm,this.startLife=(n=e.startLife)!==null&&n!==void 0?n:new ne(5),this.startSpeed=(i=e.startSpeed)!==null&&i!==void 0?i:new ne(0),this.startRotation=(s=e.startRotation)!==null&&s!==void 0?s:new ne(0),this.startSize=(a=e.startSize)!==null&&a!==void 0?a:new ne(1),this.startColor=(o=e.startColor)!==null&&o!==void 0?o:new Tn(new nt(1,1,1,1)),this.emissionOverTime=(c=e.emissionOverTime)!==null&&c!==void 0?c:new ne(10),this.emissionOverDistance=(l=e.emissionOverDistance)!==null&&l!==void 0?l:new ne(0),this.emissionBursts=(u=e.emissionBursts)!==null&&u!==void 0?u:[],this.onlyUsedByOther=(p=e.onlyUsedByOther)!==null&&p!==void 0?p:!1,this.emitterShape=(m=e.shape)!==null&&m!==void 0?m:new qn,this.behaviors=(f=e.behaviors)!==null&&f!==void 0?f:new Array,this.worldSpace=(x=e.worldSpace)!==null&&x!==void 0?x:!1,this.rendererEmitterSettings=(w=e.rendererEmitterSettings)!==null&&w!==void 0?w:{},e.renderMode===V.StretchedBillBoard){const I=this.rendererEmitterSettings;e.speedFactor!==void 0&&(I.speedFactor=e.speedFactor),I.speedFactor=(g=I.speedFactor)!==null&&g!==void 0?g:0,I.lengthFactor=(v=I.lengthFactor)!==null&&v!==void 0?v:0}this.rendererSettings={instancingGeometry:(_=e.instancingGeometry)!==null&&_!==void 0?_:rd,renderMode:(S=e.renderMode)!==null&&S!==void 0?S:V.BillBoard,renderOrder:(T=e.renderOrder)!==null&&T!==void 0?T:0,material:e.material,uTileCount:(M=e.uTileCount)!==null&&M!==void 0?M:1,vTileCount:(E=e.vTileCount)!==null&&E!==void 0?E:1,blendTiles:(P=e.blendTiles)!==null&&P!==void 0?P:!1,softParticles:(O=e.softParticles)!==null&&O!==void 0?O:!1,softNearFade:(R=e.softNearFade)!==null&&R!==void 0?R:0,softFarFade:(A=e.softFarFade)!==null&&A!==void 0?A:0,layers:(B=e.layers)!==null&&B!==void 0?B:new ar},this.neededToUpdateRender=!0,this.particles=new Array,this.startTileIndex=e.startTileIndex||new ne(0),this.emitter=new ed(this),this.paused=!1,this.particleNum=0,this.emissionState={isBursting:!1,burstParticleIndex:0,burstParticleCount:0,burstIndex:0,burstWaveIndex:0,time:0,waitEmiting:0,travelDistance:0},this.emissionBursts.forEach(I=>I.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1}pause(){this.paused=!0}play(){this.paused=!1}stop(){this.restart(),this.pause()}spawn(e,t,n){Xs.setFromRotationMatrix(n);const i=nd,s=Xs,a=id;n.decompose(i,s,a);for(let o=0;o<e;o++){for(t.burstParticleIndex=o,this.particleNum++;this.particles.length<this.particleNum;)this.rendererSettings.renderMode===V.Trail?this.particles.push(new Cr):this.particles.push(new zh);const c=this.particles[this.particleNum-1];if(c.reset(),c.speedModifier=1,this.startColor.startGen(c.memory),this.startColor.genColor(c.memory,c.startColor,this.emissionState.time),c.color.copy(c.startColor),this.startSpeed.startGen(c.memory),c.startSpeed=this.startSpeed.genValue(c.memory,t.time/this.duration),this.startLife.startGen(c.memory),c.life=this.startLife.genValue(c.memory,t.time/this.duration),c.age=0,this.startSize.startGen(c.memory),this.startSize.type==="vec3function")this.startSize.genValue(c.memory,c.startSize,t.time/this.duration);else{const l=this.startSize.genValue(c.memory,t.time/this.duration);c.startSize.set(l,l,l)}if(this.startTileIndex.startGen(c.memory),c.uvTile=this.startTileIndex.genValue(c.memory),c.size.copy(c.startSize),this.rendererSettings.renderMode===V.Mesh||this.rendererSettings.renderMode===V.BillBoard||this.rendererSettings.renderMode===V.VerticalBillBoard||this.rendererSettings.renderMode===V.HorizontalBillBoard||this.rendererSettings.renderMode===V.StretchedBillBoard){const l=c;this.startRotation.startGen(c.memory),this.rendererSettings.renderMode===V.Mesh?(l.rotation instanceof re||(l.rotation=new re),this.startRotation.type==="rotation"?this.startRotation.genValue(c.memory,l.rotation,1,t.time/this.duration):l.rotation.setFromAxisAngle(td,this.startRotation.genValue(l.memory,t.time/this.duration))):this.startRotation.type==="rotation"?l.rotation=0:l.rotation=this.startRotation.genValue(l.memory,t.time/this.duration)}else if(this.rendererSettings.renderMode===V.Trail){const l=c;this.rendererEmitterSettings.startLength.startGen(l.memory),l.length=this.rendererEmitterSettings.startLength.genValue(l.memory,t.time/this.duration)}if(this.emitterShape.initialize(c,t),this.rendererSettings.renderMode===V.Trail&&this.rendererEmitterSettings.followLocalOrigin){const l=c;l.localPosition=new W().copy(l.position)}this.worldSpace?(c.position.applyMatrix4(n),c.startSize.multiply(a).abs(),c.size.copy(c.startSize),c.velocity.multiply(a).applyMatrix3(this.normalMatrix),c.rotation&&c.rotation instanceof re&&c.rotation.multiplyQuaternions(Xs,c.rotation)):this.onlyUsedByOther&&(c.parentMatrix=n);for(let l=0;l<this.behaviors.length;l++)this.behaviors[l].initialize(c,this)}}endEmit(){this.emitEnded=!0,this.autoDestroy&&(this.markForDestroy=!0),this.fire({type:"emitEnd",particleSystem:this})}dispose(){this._renderer&&this._renderer.deleteSystem(this),this.emitter.dispose(),this.emitter.parent&&this.emitter.parent.remove(this.emitter),this.fire({type:"destroy",particleSystem:this})}restart(){this.memory.length=0,this.paused=!1,this.particleNum=0,this.emissionState.isBursting=!1,this.emissionState.burstIndex=0,this.emissionState.burstWaveIndex=0,this.emissionState.time=0,this.emissionState.waitEmiting=0,this.behaviors.forEach(e=>{e.reset()}),this.emitEnded=!1,this.markForDestroy=!1,this.prewarmed=!1,this.emissionBursts.forEach(e=>e.count.startGen(this.memory)),this.emissionOverDistance.startGen(this.memory)}update(e){if(this.paused)return;let t=this.emitter;for(;t.parent;)t=t.parent;if(t.type!=="Scene"){this.dispose();return}if(this.firstTimeUpdate&&(this.firstTimeUpdate=!1,this.emitter.updateWorldMatrix(!0,!1)),this.emitEnded&&this.particleNum===0){this.markForDestroy&&this.emitter.parent&&this.dispose();return}if(this.looping&&this.prewarm&&!this.prewarmed){this.prewarmed=!0;for(let n=0;n<this.duration*Jc;n++)this.update(1/Jc)}e>.1&&(e=.1),this.neededToUpdateRender&&(this._renderer&&this._renderer.updateSystem(this),this.neededToUpdateRender=!1),this.onlyUsedByOther||this.emit(e,this.emissionState,this.emitter.matrixWorld),this.emitterShape.update(this,e);for(let n=0;n<this.behaviors.length;n++){this.behaviors[n].frameUpdate(e);for(let i=0;i<this.particleNum;i++)this.particles[i].died||this.behaviors[n].update(this.particles[i],e)}for(let n=0;n<this.particleNum;n++)this.rendererEmitterSettings.followLocalOrigin&&this.particles[n].localPosition?(this.particles[n].position.copy(this.particles[n].localPosition),this.particles[n].parentMatrix?this.particles[n].position.applyMatrix4(this.particles[n].parentMatrix):this.particles[n].position.applyMatrix4(this.emitter.matrixWorld)):this.particles[n].position.addScaledVector(this.particles[n].velocity,e*this.particles[n].speedModifier),this.particles[n].age+=e;if(this.rendererSettings.renderMode===V.Trail)for(let n=0;n<this.particleNum;n++)this.particles[n].update();for(let n=0;n<this.particleNum;n++){const i=this.particles[n];i.died&&(!(i instanceof Cr)||i.previous.length===0)&&(this.particles[n]=this.particles[this.particleNum-1],this.particles[this.particleNum-1]=i,this.particleNum--,n--,this.fire({type:"particleDied",particleSystem:this,particle:i}))}}emit(e,t,n){t.time>this.duration&&(this.looping?(t.time-=this.duration,t.burstIndex=0,this.behaviors.forEach(s=>{s.reset()})):!this.emitEnded&&!this.onlyUsedByOther&&this.endEmit()),this.normalMatrix.getNormalMatrix(n);const i=Math.ceil(t.waitEmiting);for(this.spawn(i,t,n),t.waitEmiting-=i;t.burstIndex<this.emissionBursts.length&&this.emissionBursts[t.burstIndex].time<=t.time;){if(Math.random()<this.emissionBursts[t.burstIndex].probability){const s=this.emissionBursts[t.burstIndex].count.genValue(this.memory,this.time);t.isBursting=!0,t.burstParticleCount=s,this.spawn(s,t,n),t.isBursting=!1}t.burstIndex++}if(!this.emitEnded&&(t.waitEmiting+=e*this.emissionOverTime.genValue(this.memory,t.time/this.duration),t.previousWorldPos!=null)){this.temp.set(n.elements[12],n.elements[13],n.elements[14]),t.travelDistance+=t.previousWorldPos.distanceTo(this.temp);const s=this.emissionOverDistance.genValue(this.memory,t.time/this.duration);if(t.travelDistance*s>0){const a=Math.floor(t.travelDistance*s);t.travelDistance-=a/s,t.waitEmiting+=a}}t.previousWorldPos===void 0&&(t.previousWorldPos=new W),t.previousWorldPos.set(n.elements[12],n.elements[13],n.elements[14]),t.time+=e}toJSON(e,t={}){var n;if((e===void 0||typeof e=="string")&&(e={geometries:{},materials:{},textures:{},images:{},shapes:{},skeletons:{},animations:{},nodes:{}}),e.materials[this.rendererSettings.material.uuid]=this.rendererSettings.material.toJSON(e),t.useUrlForImage&&((n=this.texture)===null||n===void 0?void 0:n.source)!==void 0){const a=this.texture.source;e.images[a.uuid]={uuid:a.uuid,url:this.texture.image.url}}let i;this.renderMode===V.Trail?i={startLength:this.rendererEmitterSettings.startLength.toJSON(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===V.Mesh?i={}:this.renderMode===V.StretchedBillBoard?i={speedFactor:this.rendererEmitterSettings.speedFactor,lengthFactor:this.rendererEmitterSettings.lengthFactor}:i={};const s=this.rendererSettings.instancingGeometry;return e.geometries&&!e.geometries[s.uuid]&&(e.geometries[s.uuid]=s.toJSON()),{version:"3.0",autoDestroy:this.autoDestroy,looping:this.looping,prewarm:this.prewarm,duration:this.duration,shape:this.emitterShape.toJSON(),startLife:this.startLife.toJSON(),startSpeed:this.startSpeed.toJSON(),startRotation:this.startRotation.toJSON(),startSize:this.startSize.toJSON(),startColor:this.startColor.toJSON(),emissionOverTime:this.emissionOverTime.toJSON(),emissionOverDistance:this.emissionOverDistance.toJSON(),emissionBursts:this.emissionBursts.map(a=>({time:a.time,count:a.count.toJSON(),probability:a.probability,interval:a.interval,cycle:a.cycle})),onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry.uuid,renderOrder:this.renderOrder,renderMode:this.renderMode,rendererEmitterSettings:i,material:this.rendererSettings.material.uuid,layers:this.layers.mask,startTileIndex:this.startTileIndex.toJSON(),uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.rendererSettings.softParticles,softFarFade:this.rendererSettings.softFarFade,softNearFade:this.rendererSettings.softNearFade,behaviors:this.behaviors.map(a=>a.toJSON()),worldSpace:this.worldSpace}}static fromJSON(e,t,n){var i,s;const a=Oh(e.shape,t);let o;if(e.renderMode===V.Trail){const u=e.rendererEmitterSettings;o={startLength:u.startLength!=null?$(u.startLength):new ne(30),followLocalOrigin:u.followLocalOrigin}}else e.renderMode===V.Mesh?o={}:e.renderMode===V.StretchedBillBoard?(o=e.rendererEmitterSettings,e.speedFactor!=null&&(o.speedFactor=e.speedFactor)):o={};const c=new ar;e.layers&&(c.mask=e.layers);const l=new ts({autoDestroy:e.autoDestroy,looping:e.looping,prewarm:e.prewarm,duration:e.duration,shape:a,startLife:$(e.startLife),startSpeed:$(e.startSpeed),startRotation:wr(e.startRotation),startSize:wr(e.startSize),startColor:Js(e.startColor),emissionOverTime:$(e.emissionOverTime),emissionOverDistance:$(e.emissionOverDistance),emissionBursts:(i=e.emissionBursts)===null||i===void 0?void 0:i.map(u=>{var p,m,f;return{time:u.time,count:typeof u.count=="number"?new ne(u.count):$(u.count),probability:(p=u.probability)!==null&&p!==void 0?p:1,interval:(m=u.interval)!==null&&m!==void 0?m:.1,cycle:(f=u.cycle)!==null&&f!==void 0?f:1}}),onlyUsedByOther:e.onlyUsedByOther,instancingGeometry:t.geometries[e.instancingGeometry],renderMode:e.renderMode,rendererEmitterSettings:o,renderOrder:e.renderOrder,layers:c,material:e.material?t.materials[e.material]:e.texture?new Qo({map:t.textures[e.texture],transparent:(s=e.transparent)!==null&&s!==void 0?s:!0,blending:e.blending,side:ms}):new Qo({color:16777215,transparent:!0,blending:$o,side:ms}),startTileIndex:typeof e.startTileIndex=="number"?new ne(e.startTileIndex):$(e.startTileIndex),uTileCount:e.uTileCount,vTileCount:e.vTileCount,blendTiles:e.blendTiles,softParticles:e.softParticles,softFarFade:e.softFarFade,softNearFade:e.softNearFade,behaviors:[],worldSpace:e.worldSpace});return l.behaviors=e.behaviors.map(u=>{const p=jh(u,l);return p.type==="EmitSubParticleSystem"&&(n[u.subParticleSystem]=p),p}),l}addBehavior(e){this.behaviors.push(e)}getRendererSettings(){return this.rendererSettings}addEventListener(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}removeAllEventListeners(e){this.listeners[e]&&(this.listeners[e]=[])}removeEventListener(e,t){if(this.listeners[e]){const n=this.listeners[e].indexOf(t);n!==-1&&this.listeners[e].splice(n,1)}}fire(e){this.listeners[e.type]&&this.listeners[e.type].forEach(t=>t(e))}clone(){const e=[];for(const s of this.emissionBursts){const a={};Object.assign(a,s),e.push(a)}const t=[];for(const s of this.behaviors)t.push(s.clone());let n;this.renderMode===V.Trail?n={startLength:this.rendererEmitterSettings.startLength.clone(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===V.StretchedBillBoard?n={lengthFactor:this.rendererEmitterSettings.lengthFactor,speedFactor:this.rendererEmitterSettings.speedFactor}:n={};const i=new ar;return i.mask=this.layers.mask,new ts({autoDestroy:this.autoDestroy,looping:this.looping,duration:this.duration,shape:this.emitterShape.clone(),startLife:this.startLife.clone(),startSpeed:this.startSpeed.clone(),startRotation:this.startRotation.clone(),startSize:this.startSize.clone(),startColor:this.startColor.clone(),emissionOverTime:this.emissionOverTime.clone(),emissionOverDistance:this.emissionOverDistance.clone(),emissionBursts:e,onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry,renderMode:this.renderMode,renderOrder:this.renderOrder,rendererEmitterSettings:n,material:this.rendererSettings.material,startTileIndex:this.startTileIndex,uTileCount:this.uTileCount,vTileCount:this.vTileCount,blendTiles:this.blendTiles,softParticles:this.softParticles,softFarFade:this.softFarFade,softNearFade:this.softNearFade,behaviors:t,worldSpace:this.worldSpace,layers:i})}}var Ys=`
605
600
 
606
601
  #include <common>
607
602
  #include <color_pars_fragment>
@@ -801,7 +796,7 @@ outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoat
801
796
  #include <fog_fragment>
802
797
  #include <premultiplied_alpha_fragment>
803
798
  #include <dithering_fragment>
804
- }`,nd=`
799
+ }`,sd=`
805
800
  #include <common>
806
801
  #include <color_pars_vertex>
807
802
  #include <logdepthbuf_pars_vertex>
@@ -847,7 +842,7 @@ void main() {
847
842
  #include <tile_vertex>
848
843
  #include <soft_vertex>
849
844
  }
850
- `,id=`
845
+ `,od=`
851
846
  #include <common>
852
847
  #include <color_pars_vertex>
853
848
  #include <logdepthbuf_pars_vertex>
@@ -969,7 +964,7 @@ void main() {
969
964
  vWorldPosition = worldPosition.xyz;
970
965
  #endif
971
966
  }
972
- `,rd=`
967
+ `,ad=`
973
968
  #include <common>
974
969
  #include <color_pars_vertex>
975
970
  #include <logdepthbuf_pars_vertex>
@@ -1010,7 +1005,7 @@ void main() {
1010
1005
  #include <tile_vertex>
1011
1006
  #include <soft_vertex>
1012
1007
  }
1013
- `;function Qs(r){return r===0?"uv":`uv${r}`}class sd extends Vl{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=Ks,e.fragmentShader=Zs}}class od extends jl{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=Ks,e.fragmentShader=Zs}}class ad extends jc{constructor(e){super(e),this.vector_=new W,this.vector2_=new W,this.vector3_=new W,this.quaternion_=new re,this.quaternion2_=new re,this.quaternion3_=new re,this.rotationMat_=new Lt,this.rotationMat2_=new Lt,this.maxParticles=1e3,this.setupBuffers(),this.rebuildMaterial()}buildExpandableBuffers(){this.offsetBuffer=new pn(new Float32Array(this.maxParticles*3),3),this.offsetBuffer.setUsage(Xe),this.geometry.setAttribute("offset",this.offsetBuffer),this.colorBuffer=new pn(new Float32Array(this.maxParticles*4),4),this.colorBuffer.setUsage(Xe),this.geometry.setAttribute("color",this.colorBuffer),this.settings.renderMode===V.Mesh?(this.rotationBuffer=new pn(new Float32Array(this.maxParticles*4),4),this.rotationBuffer.setUsage(Xe),this.geometry.setAttribute("rotation",this.rotationBuffer)):(this.settings.renderMode===V.BillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.StretchedBillBoard)&&(this.rotationBuffer=new pn(new Float32Array(this.maxParticles),1),this.rotationBuffer.setUsage(Xe),this.geometry.setAttribute("rotation",this.rotationBuffer)),this.sizeBuffer=new pn(new Float32Array(this.maxParticles*3),3),this.sizeBuffer.setUsage(Xe),this.geometry.setAttribute("size",this.sizeBuffer),this.uvTileBuffer=new pn(new Float32Array(this.maxParticles),1),this.uvTileBuffer.setUsage(Xe),this.geometry.setAttribute("uvTile",this.uvTileBuffer),this.settings.renderMode===V.StretchedBillBoard&&(this.velocityBuffer=new pn(new Float32Array(this.maxParticles*4),4),this.velocityBuffer.setUsage(Xe),this.geometry.setAttribute("velocity",this.velocityBuffer))}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new Fl,this.geometry.setIndex(this.settings.instancingGeometry.getIndex()),this.settings.instancingGeometry.hasAttribute("normal")&&this.geometry.setAttribute("normal",this.settings.instancingGeometry.getAttribute("normal")),this.geometry.setAttribute("position",this.settings.instancingGeometry.getAttribute("position")),this.geometry.setAttribute("uv",this.settings.instancingGeometry.getAttribute("uv")),this.buildExpandableBuffers()}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;const e={},t={};this.settings.material.type!=="MeshStandardMaterial"&&this.settings.material.type!=="MeshPhysicalMaterial"&&(e.map=new Ct(this.settings.material.map)),this.settings.material.alphaTest&&(t.USE_ALPHATEST="",e.alphaTest=new Ct(this.settings.material.alphaTest)),t.USE_UV="";const n=this.settings.uTileCount,i=this.settings.vTileCount;(n>1||i>1)&&(t.UV_TILE="",e.tileCount=new Ct(new Wn(n,i))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=""),this.settings.material.normalMap&&(t.USE_NORMALMAP="",t.NORMALMAP_UV=Qs(this.settings.material.normalMap.channel),e.normalMapTransform=new Ct(new Lt().copy(this.settings.material.normalMap.matrix))),this.settings.material.map&&(t.USE_MAP="",this.settings.blendTiles&&(t.TILE_BLEND=""),t.MAP_UV=Qs(this.settings.material.map.channel),e.mapTransform=new Ct(new Lt().copy(this.settings.material.map.matrix))),t.USE_COLOR_ALPHA="";let s;if(this.settings.softParticles){t.SOFT_PARTICLES="";const o=this.settings.softNearFade,c=1/(this.settings.softFarFade-this.settings.softNearFade);e.softParams=new Ct(new Wn(o,c)),e.depthTexture=new Ct(null);const l=e.projParams=new Ct(new nt);s=(u,p,m)=>{l.value.set(m.near,m.far,0,0)}}let a=!1;if(this.settings.renderMode===V.BillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.Mesh){let o,c;this.settings.renderMode===V.Mesh?this.settings.material.type==="MeshStandardMaterial"||this.settings.material.type==="MeshPhysicalMaterial"?(t.USE_COLOR="",o=Ks,c=Zs,a=!0):(o=id,c=Ys):(o=nd,c=Ys),this.settings.renderMode===V.VerticalBillBoard?t.VERTICAL="":this.settings.renderMode===V.HorizontalBillBoard&&(t.HORIZONTAL="");let l=!1;this.settings.renderMode===V.Mesh&&(this.settings.material.type==="MeshStandardMaterial"?(this.material=new sd({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,l=!0):this.settings.material.type==="MeshPhysicalMaterial"&&(this.material=new od({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,l=!0)),l||(this.material=new ys({uniforms:e,defines:t,vertexShader:o,fragmentShader:c,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest,lights:a}))}else if(this.settings.renderMode===V.StretchedBillBoard)e.speedFactor=new Ct(1),this.material=new ys({uniforms:e,defines:t,vertexShader:rd,fragmentShader:Ys,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest});else throw new Error("render mode unavailable");this.material&&s&&(this.material.onBeforeRender=s)}update(){let e=0,t=0;this.systems.forEach(n=>{t+=n.particleNum}),t>this.maxParticles&&this.expandBuffers(t),this.systems.forEach(n=>{n.emitter.updateMatrixWorld&&(n.emitter.updateWorldMatrix(!0,!1),n.emitter.updateMatrixWorld(!0));const i=n.particles,s=n.particleNum,a=this.quaternion2_,o=this.vector2_,c=this.vector3_;n.emitter.matrixWorld.decompose(o,a,c),this.rotationMat_.setFromMatrix4(n.emitter.matrixWorld);for(let l=0;l<s;l++,e++){const u=i[l];if(this.settings.renderMode===V.Mesh){let m;if(n.worldSpace)m=u.rotation;else{let f;u.parentMatrix?f=this.quaternion3_.setFromRotationMatrix(u.parentMatrix):f=a,m=this.quaternion_,m.copy(f).multiply(u.rotation)}this.rotationBuffer.setXYZW(e,m.x,m.y,m.z,m.w)}else(this.settings.renderMode===V.StretchedBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.BillBoard)&&this.rotationBuffer.setX(e,u.rotation);let p;if(n.worldSpace?p=u.position:(p=this.vector_,u.parentMatrix?p.copy(u.position).applyMatrix4(u.parentMatrix):p.copy(u.position).applyMatrix4(n.emitter.matrixWorld)),this.offsetBuffer.setXYZ(e,p.x,p.y,p.z),this.colorBuffer.setXYZW(e,u.color.x,u.color.y,u.color.z,u.color.w),n.worldSpace?this.sizeBuffer.setXYZ(e,u.size.x,u.size.y,u.size.z):u.parentMatrix?this.sizeBuffer.setXYZ(e,u.size.x,u.size.y,u.size.z):this.sizeBuffer.setXYZ(e,u.size.x*Math.abs(c.x),u.size.y*Math.abs(c.y),u.size.z*Math.abs(c.z)),this.uvTileBuffer.setX(e,u.uvTile),this.settings.renderMode===V.StretchedBillBoard&&this.velocityBuffer){let m=n.rendererEmitterSettings.speedFactor;m===0&&(m=.001);const f=n.rendererEmitterSettings.lengthFactor;let x;n.worldSpace?x=u.velocity:(x=this.vector_,u.parentMatrix?(this.rotationMat2_.setFromMatrix4(u.parentMatrix),x.copy(u.velocity).applyMatrix3(this.rotationMat2_)):x.copy(u.velocity).applyMatrix3(this.rotationMat_)),this.velocityBuffer.setXYZW(e,x.x*m,x.y*m,x.z*m,f)}}}),this.geometry.instanceCount=e,e>0&&(this.offsetBuffer.clearUpdateRanges(),this.offsetBuffer.addUpdateRange(0,e*3),this.offsetBuffer.needsUpdate=!0,this.sizeBuffer.clearUpdateRanges(),this.sizeBuffer.addUpdateRange(0,e*3),this.sizeBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.uvTileBuffer.clearUpdateRanges(),this.uvTileBuffer.addUpdateRange(0,e),this.uvTileBuffer.needsUpdate=!0,this.settings.renderMode===V.StretchedBillBoard&&this.velocityBuffer&&(this.velocityBuffer.clearUpdateRanges(),this.velocityBuffer.addUpdateRange(0,e*4),this.velocityBuffer.needsUpdate=!0),this.settings.renderMode===V.Mesh?(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e*4),this.rotationBuffer.needsUpdate=!0):(this.settings.renderMode===V.StretchedBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.BillBoard)&&(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e),this.rotationBuffer.needsUpdate=!0))}dispose(){this.geometry.dispose()}}var cd=`
1008
+ `;function Qs(r){return r===0?"uv":`uv${r}`}class cd extends Gl{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=Ks,e.fragmentShader=Zs}}class ld extends Wl{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=Ks,e.fragmentShader=Zs}}class ud extends jc{constructor(e){super(e),this.vector_=new W,this.vector2_=new W,this.vector3_=new W,this.quaternion_=new re,this.quaternion2_=new re,this.quaternion3_=new re,this.rotationMat_=new Lt,this.rotationMat2_=new Lt,this.maxParticles=1e3,this.setupBuffers(),this.rebuildMaterial()}buildExpandableBuffers(){this.offsetBuffer=new dn(new Float32Array(this.maxParticles*3),3),this.offsetBuffer.setUsage(Xe),this.geometry.setAttribute("offset",this.offsetBuffer),this.colorBuffer=new dn(new Float32Array(this.maxParticles*4),4),this.colorBuffer.setUsage(Xe),this.geometry.setAttribute("color",this.colorBuffer),this.settings.renderMode===V.Mesh?(this.rotationBuffer=new dn(new Float32Array(this.maxParticles*4),4),this.rotationBuffer.setUsage(Xe),this.geometry.setAttribute("rotation",this.rotationBuffer)):(this.settings.renderMode===V.BillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.StretchedBillBoard)&&(this.rotationBuffer=new dn(new Float32Array(this.maxParticles),1),this.rotationBuffer.setUsage(Xe),this.geometry.setAttribute("rotation",this.rotationBuffer)),this.sizeBuffer=new dn(new Float32Array(this.maxParticles*3),3),this.sizeBuffer.setUsage(Xe),this.geometry.setAttribute("size",this.sizeBuffer),this.uvTileBuffer=new dn(new Float32Array(this.maxParticles),1),this.uvTileBuffer.setUsage(Xe),this.geometry.setAttribute("uvTile",this.uvTileBuffer),this.settings.renderMode===V.StretchedBillBoard&&(this.velocityBuffer=new dn(new Float32Array(this.maxParticles*4),4),this.velocityBuffer.setUsage(Xe),this.geometry.setAttribute("velocity",this.velocityBuffer))}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new Jl,this.geometry.setIndex(this.settings.instancingGeometry.getIndex()),this.settings.instancingGeometry.hasAttribute("normal")&&this.geometry.setAttribute("normal",this.settings.instancingGeometry.getAttribute("normal")),this.geometry.setAttribute("position",this.settings.instancingGeometry.getAttribute("position")),this.geometry.setAttribute("uv",this.settings.instancingGeometry.getAttribute("uv")),this.buildExpandableBuffers()}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;const e={},t={};this.settings.material.type!=="MeshStandardMaterial"&&this.settings.material.type!=="MeshPhysicalMaterial"&&(e.map=new Ct(this.settings.material.map)),this.settings.material.alphaTest&&(t.USE_ALPHATEST="",e.alphaTest=new Ct(this.settings.material.alphaTest)),t.USE_UV="";const n=this.settings.uTileCount,i=this.settings.vTileCount;(n>1||i>1)&&(t.UV_TILE="",e.tileCount=new Ct(new Wn(n,i))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=""),this.settings.material.normalMap&&(t.USE_NORMALMAP="",t.NORMALMAP_UV=Qs(this.settings.material.normalMap.channel),e.normalMapTransform=new Ct(new Lt().copy(this.settings.material.normalMap.matrix))),this.settings.material.map&&(t.USE_MAP="",this.settings.blendTiles&&(t.TILE_BLEND=""),t.MAP_UV=Qs(this.settings.material.map.channel),e.mapTransform=new Ct(new Lt().copy(this.settings.material.map.matrix))),t.USE_COLOR_ALPHA="";let s;if(this.settings.softParticles){t.SOFT_PARTICLES="";const o=this.settings.softNearFade,c=1/(this.settings.softFarFade-this.settings.softNearFade);e.softParams=new Ct(new Wn(o,c)),e.depthTexture=new Ct(null);const l=e.projParams=new Ct(new nt);s=(u,p,m)=>{l.value.set(m.near,m.far,0,0)}}let a=!1;if(this.settings.renderMode===V.BillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.Mesh){let o,c;this.settings.renderMode===V.Mesh?this.settings.material.type==="MeshStandardMaterial"||this.settings.material.type==="MeshPhysicalMaterial"?(t.USE_COLOR="",o=Ks,c=Zs,a=!0):(o=od,c=Ys):(o=sd,c=Ys),this.settings.renderMode===V.VerticalBillBoard?t.VERTICAL="":this.settings.renderMode===V.HorizontalBillBoard&&(t.HORIZONTAL="");let l=!1;this.settings.renderMode===V.Mesh&&(this.settings.material.type==="MeshStandardMaterial"?(this.material=new cd({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,l=!0):this.settings.material.type==="MeshPhysicalMaterial"&&(this.material=new ld({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,l=!0)),l||(this.material=new ys({uniforms:e,defines:t,vertexShader:o,fragmentShader:c,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest,lights:a}))}else if(this.settings.renderMode===V.StretchedBillBoard)e.speedFactor=new Ct(1),this.material=new ys({uniforms:e,defines:t,vertexShader:ad,fragmentShader:Ys,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,blending:this.settings.material.blending,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha,side:this.settings.material.side,alphaTest:this.settings.material.alphaTest,depthTest:this.settings.material.depthTest});else throw new Error("render mode unavailable");this.material&&s&&(this.material.onBeforeRender=s)}update(){let e=0,t=0;this.systems.forEach(n=>{t+=n.particleNum}),t>this.maxParticles&&this.expandBuffers(t),this.systems.forEach(n=>{n.emitter.updateMatrixWorld&&(n.emitter.updateWorldMatrix(!0,!1),n.emitter.updateMatrixWorld(!0));const i=n.particles,s=n.particleNum,a=this.quaternion2_,o=this.vector2_,c=this.vector3_;n.emitter.matrixWorld.decompose(o,a,c),this.rotationMat_.setFromMatrix4(n.emitter.matrixWorld);for(let l=0;l<s;l++,e++){const u=i[l];if(this.settings.renderMode===V.Mesh){let m;if(n.worldSpace)m=u.rotation;else{let f;u.parentMatrix?f=this.quaternion3_.setFromRotationMatrix(u.parentMatrix):f=a,m=this.quaternion_,m.copy(f).multiply(u.rotation)}this.rotationBuffer.setXYZW(e,m.x,m.y,m.z,m.w)}else(this.settings.renderMode===V.StretchedBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.BillBoard)&&this.rotationBuffer.setX(e,u.rotation);let p;if(n.worldSpace?p=u.position:(p=this.vector_,u.parentMatrix?p.copy(u.position).applyMatrix4(u.parentMatrix):p.copy(u.position).applyMatrix4(n.emitter.matrixWorld)),this.offsetBuffer.setXYZ(e,p.x,p.y,p.z),this.colorBuffer.setXYZW(e,u.color.x,u.color.y,u.color.z,u.color.w),n.worldSpace?this.sizeBuffer.setXYZ(e,u.size.x,u.size.y,u.size.z):u.parentMatrix?this.sizeBuffer.setXYZ(e,u.size.x,u.size.y,u.size.z):this.sizeBuffer.setXYZ(e,u.size.x*Math.abs(c.x),u.size.y*Math.abs(c.y),u.size.z*Math.abs(c.z)),this.uvTileBuffer.setX(e,u.uvTile),this.settings.renderMode===V.StretchedBillBoard&&this.velocityBuffer){let m=n.rendererEmitterSettings.speedFactor;m===0&&(m=.001);const f=n.rendererEmitterSettings.lengthFactor;let x;n.worldSpace?x=u.velocity:(x=this.vector_,u.parentMatrix?(this.rotationMat2_.setFromMatrix4(u.parentMatrix),x.copy(u.velocity).applyMatrix3(this.rotationMat2_)):x.copy(u.velocity).applyMatrix3(this.rotationMat_)),this.velocityBuffer.setXYZW(e,x.x*m,x.y*m,x.z*m,f)}}}),this.geometry.instanceCount=e,e>0&&(this.offsetBuffer.clearUpdateRanges(),this.offsetBuffer.addUpdateRange(0,e*3),this.offsetBuffer.needsUpdate=!0,this.sizeBuffer.clearUpdateRanges(),this.sizeBuffer.addUpdateRange(0,e*3),this.sizeBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.uvTileBuffer.clearUpdateRanges(),this.uvTileBuffer.addUpdateRange(0,e),this.uvTileBuffer.needsUpdate=!0,this.settings.renderMode===V.StretchedBillBoard&&this.velocityBuffer&&(this.velocityBuffer.clearUpdateRanges(),this.velocityBuffer.addUpdateRange(0,e*4),this.velocityBuffer.needsUpdate=!0),this.settings.renderMode===V.Mesh?(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e*4),this.rotationBuffer.needsUpdate=!0):(this.settings.renderMode===V.StretchedBillBoard||this.settings.renderMode===V.HorizontalBillBoard||this.settings.renderMode===V.VerticalBillBoard||this.settings.renderMode===V.BillBoard)&&(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e),this.rotationBuffer.needsUpdate=!0))}dispose(){this.geometry.dispose()}}var hd=`
1014
1009
 
1015
1010
  #include <common>
1016
1011
  #include <tile_pars_fragment>
@@ -1043,7 +1038,7 @@ void main() {
1043
1038
 
1044
1039
  #include <fog_fragment>
1045
1040
  #include <tonemapping_fragment>
1046
- }`,ld=`
1041
+ }`,dd=`
1047
1042
  #include <common>
1048
1043
  #include <tile_pars_vertex>
1049
1044
  #include <color_pars_vertex>
@@ -1118,4 +1113,4 @@ void main() {
1118
1113
  vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
1119
1114
 
1120
1115
  #include <fog_vertex>
1121
- }`;class ud extends jc{constructor(e){super(e),this.vector_=new W,this.vector2_=new W,this.vector3_=new W,this.quaternion_=new re,this.maxParticles=1e4,this.setupBuffers(),this.rebuildMaterial()}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new Kn,this.indexBuffer=new ot(new Uint32Array(this.maxParticles*6),1),this.indexBuffer.setUsage(Xe),this.geometry.setIndex(this.indexBuffer),this.positionBuffer=new ot(new Float32Array(this.maxParticles*6),3),this.positionBuffer.setUsage(Xe),this.geometry.setAttribute("position",this.positionBuffer),this.previousBuffer=new ot(new Float32Array(this.maxParticles*6),3),this.previousBuffer.setUsage(Xe),this.geometry.setAttribute("previous",this.previousBuffer),this.nextBuffer=new ot(new Float32Array(this.maxParticles*6),3),this.nextBuffer.setUsage(Xe),this.geometry.setAttribute("next",this.nextBuffer),this.widthBuffer=new ot(new Float32Array(this.maxParticles*2),1),this.widthBuffer.setUsage(Xe),this.geometry.setAttribute("width",this.widthBuffer),this.sideBuffer=new ot(new Float32Array(this.maxParticles*2),1),this.sideBuffer.setUsage(Xe),this.geometry.setAttribute("side",this.sideBuffer),this.uvBuffer=new ot(new Float32Array(this.maxParticles*4),2),this.uvBuffer.setUsage(Xe),this.geometry.setAttribute("uv",this.uvBuffer),this.colorBuffer=new ot(new Float32Array(this.maxParticles*8),4),this.colorBuffer.setUsage(Xe),this.geometry.setAttribute("color",this.colorBuffer)}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;const e={lineWidth:{value:1},map:{value:null},useMap:{value:0},alphaMap:{value:null},useAlphaMap:{value:0},resolution:{value:new Wn(1,1)},sizeAttenuation:{value:1},visibility:{value:1},alphaTest:{value:0}},t={};if(t.USE_UV="",t.USE_COLOR_ALPHA="",this.settings.material.map&&(t.USE_MAP="",t.MAP_UV=Qs(this.settings.material.map.channel),e.map=new Ct(this.settings.material.map),e.mapTransform=new Ct(new Lt().copy(this.settings.material.map.matrix))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=""),this.settings.renderMode===V.Trail)this.material=new ys({uniforms:e,defines:t,vertexShader:ld,fragmentShader:cd,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,side:this.settings.material.side,blending:this.settings.material.blending||$o,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha});else throw new Error("render mode unavailable")}update(){let e=0,t=0,n=0;this.systems.forEach(i=>{for(let s=0;s<i.particleNum;s++)n+=i.particles[s].previous.length*2}),n>this.maxParticles&&this.expandBuffers(n),this.systems.forEach(i=>{i.emitter.updateMatrixWorld&&(i.emitter.updateWorldMatrix(!0,!1),i.emitter.updateMatrixWorld(!0));const s=this.quaternion_,a=this.vector2_,o=this.vector3_;i.emitter.matrixWorld.decompose(a,s,o);const c=i.particles,l=i.particleNum,u=this.settings.uTileCount,p=this.settings.vTileCount,m=1/u,f=1/p;for(let x=0;x<l;x++){const w=c[x],g=w.uvTile%p,v=Math.floor(w.uvTile/p+.001),_=w.previous.values();let S=_.next(),M=S.value,T=M;S.done||(S=_.next());let E;S.value!==void 0?E=S.value:E=T;for(let P=0;P<w.previous.length;P++,e+=2){if(this.positionBuffer.setXYZ(e,T.position.x,T.position.y,T.position.z),this.positionBuffer.setXYZ(e+1,T.position.x,T.position.y,T.position.z),i.worldSpace?(this.positionBuffer.setXYZ(e,T.position.x,T.position.y,T.position.z),this.positionBuffer.setXYZ(e+1,T.position.x,T.position.y,T.position.z)):(w.parentMatrix?this.vector_.copy(T.position).applyMatrix4(w.parentMatrix):this.vector_.copy(T.position).applyMatrix4(i.emitter.matrixWorld),this.positionBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.positionBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.previousBuffer.setXYZ(e,M.position.x,M.position.y,M.position.z),this.previousBuffer.setXYZ(e+1,M.position.x,M.position.y,M.position.z)):(w.parentMatrix?this.vector_.copy(M.position).applyMatrix4(w.parentMatrix):this.vector_.copy(M.position).applyMatrix4(i.emitter.matrixWorld),this.previousBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.previousBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.nextBuffer.setXYZ(e,E.position.x,E.position.y,E.position.z),this.nextBuffer.setXYZ(e+1,E.position.x,E.position.y,E.position.z)):(w.parentMatrix?this.vector_.copy(E.position).applyMatrix4(w.parentMatrix):this.vector_.copy(E.position).applyMatrix4(i.emitter.matrixWorld),this.nextBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.nextBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),this.sideBuffer.setX(e,-1),this.sideBuffer.setX(e+1,1),i.worldSpace)this.widthBuffer.setX(e,T.size),this.widthBuffer.setX(e+1,T.size);else if(w.parentMatrix)this.widthBuffer.setX(e,T.size),this.widthBuffer.setX(e+1,T.size);else{const z=(Math.abs(o.x)+Math.abs(o.y)+Math.abs(o.z))/3;this.widthBuffer.setX(e,T.size*z),this.widthBuffer.setX(e+1,T.size*z)}this.uvBuffer.setXY(e,(P/w.previous.length+g)*m,(p-v-1)*f),this.uvBuffer.setXY(e+1,(P/w.previous.length+g)*m,(p-v)*f),this.colorBuffer.setXYZW(e,T.color.x,T.color.y,T.color.z,T.color.w),this.colorBuffer.setXYZW(e+1,T.color.x,T.color.y,T.color.z,T.color.w),P+1<w.previous.length&&(this.indexBuffer.setX(t*3,e),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+2),t++,this.indexBuffer.setX(t*3,e+2),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+3),t++),M=T,T=E,S.done||(S=_.next(),S.value!==void 0&&(E=S.value))}}}),this.positionBuffer.clearUpdateRanges(),this.positionBuffer.addUpdateRange(0,e*3),this.positionBuffer.needsUpdate=!0,this.previousBuffer.clearUpdateRanges(),this.previousBuffer.addUpdateRange(0,e*3),this.previousBuffer.needsUpdate=!0,this.nextBuffer.clearUpdateRanges(),this.nextBuffer.addUpdateRange(0,e*3),this.nextBuffer.needsUpdate=!0,this.sideBuffer.clearUpdateRanges(),this.sideBuffer.addUpdateRange(0,e),this.sideBuffer.needsUpdate=!0,this.widthBuffer.clearUpdateRanges(),this.widthBuffer.addUpdateRange(0,e),this.widthBuffer.needsUpdate=!0,this.uvBuffer.clearUpdateRanges(),this.uvBuffer.addUpdateRange(0,e*2),this.uvBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.indexBuffer.clearUpdateRanges(),this.indexBuffer.addUpdateRange(0,t*3),this.indexBuffer.needsUpdate=!0,this.geometry.setDrawRange(0,t*3)}dispose(){this.geometry.dispose()}}class $i{get geometry(){return this._geometry}set geometry(e){if(this._geometry=e,e===void 0||typeof e=="string")return;const t=new fn;this._triangleIndexToArea.length=0;let n=0;if(!e.getIndex())return;const i=e.getIndex().array,s=i.length/3;this._triangleIndexToArea.push(0);for(let a=0;a<s;a++)t.setFromAttributeAndIndices(e.getAttribute("position"),i[a*3],i[a*3+1],i[a*3+2]),n+=t.getArea(),this._triangleIndexToArea.push(n);e.userData.triangleIndexToArea=this._triangleIndexToArea}constructor(e){this.type="mesh_surface",this._triangleIndexToArea=[],this._tempA=new q,this._tempB=new q,this._tempC=new q,e&&(this.geometry=e)}initialize(e){const t=this._geometry;if(!t||t.getIndex()===null){e.position.set(0,0,0),e.velocity.set(0,0,1).multiplyScalar(e.startSpeed);return}const n=this._triangleIndexToArea.length-1;let i=0,s=n;const a=Math.random()*this._triangleIndexToArea[n];for(;i+1<s;){const f=Math.floor((i+s)/2);a<this._triangleIndexToArea[f]?s=f:i=f}let o=Math.random(),c=Math.random();o+c>1&&(o=1-o,c=1-c);const l=t.getIndex().array[i*3],u=t.getIndex().array[i*3+1],p=t.getIndex().array[i*3+2],m=t.getAttribute("position");this._tempA.fromBufferAttribute(m,l),this._tempB.fromBufferAttribute(m,u),this._tempC.fromBufferAttribute(m,p),this._tempB.sub(this._tempA),this._tempC.sub(this._tempA),this._tempA.addScaledVector(this._tempB,o).addScaledVector(this._tempC,c),e.position.copy(this._tempA),this._tempA.copy(this._tempB).cross(this._tempC).normalize(),e.velocity.copy(this._tempA).normalize().multiplyScalar(e.startSpeed)}toJSON(){return{type:"mesh_surface",mesh:this._geometry?this._geometry.uuid:""}}static fromJSON(e,t){return new $i(t.geometries[e.geometry])}clone(){return new $i(this._geometry)}update(e,t){}}Vh({id:"three.quarks",emitterShapes:[{type:"mesh_surface",params:[["geometry",["geometry"]]],constructor:$i,loadJSON:$i.fromJSON}],behaviors:[]});class Co extends Ko{constructor(){super(),this.batches=[],this.systemToBatchIndex=new Map,this.type="BatchedRenderer",this.depthTexture=null}static equals(e,t){return e.material.side===t.material.side&&e.material.blending===t.material.blending&&e.material.blendSrc===t.material.blendSrc&&e.material.blendDst===t.material.blendDst&&e.material.blendEquation===t.material.blendEquation&&e.material.premultipliedAlpha===t.material.premultipliedAlpha&&e.material.transparent===t.material.transparent&&e.material.depthTest===t.material.depthTest&&e.material.type===t.material.type&&e.material.alphaTest===t.material.alphaTest&&e.material.map===t.material.map&&e.renderMode===t.renderMode&&e.blendTiles===t.blendTiles&&e.softParticles===t.softParticles&&e.softFarFade===t.softFarFade&&e.softNearFade===t.softNearFade&&e.uTileCount===t.uTileCount&&e.vTileCount===t.vTileCount&&e.instancingGeometry===t.instancingGeometry&&e.renderOrder===t.renderOrder&&e.layers.mask===t.layers.mask}addSystem(e){e._renderer=this;const t=e.getRendererSettings();for(let i=0;i<this.batches.length;i++)if(Co.equals(this.batches[i].settings,t)){this.batches[i].addSystem(e),this.systemToBatchIndex.set(e,i);return}let n;switch(t.renderMode){case V.Trail:n=new ud(t);break;case V.Mesh:case V.BillBoard:case V.VerticalBillBoard:case V.HorizontalBillBoard:case V.StretchedBillBoard:n=new ad(t);break}this.depthTexture&&n.applyDepthTexture(this.depthTexture),n.addSystem(e),this.batches.push(n),this.systemToBatchIndex.set(e,this.batches.length-1),this.add(n)}deleteSystem(e){const t=this.systemToBatchIndex.get(e);t!=null&&(this.batches[t].removeSystem(e),this.systemToBatchIndex.delete(e))}setDepthTexture(e){this.depthTexture=e;for(const t of this.batches)t.applyDepthTexture(e)}updateSystem(e){this.deleteSystem(e),this.addSystem(e)}update(e){this.systemToBatchIndex.forEach((t,n)=>{n.update(e)});for(let t=0;t<this.batches.length;t++)this.batches[t].update()}}const hd=Co;Zh(),console.log("%c Particle system powered by three.quarks. https://quarks.art/","font-size: 14px; font-weight: bold;");const Gc=Math.sqrt(5),dd=(Gc-1)/4,De=(5-Gc)/20,Pr=r=>Math.floor(r)|0,kr=new Float64Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);function pd(r=Math.random){const e=fd(r),t=new Float64Array(e).map(a=>kr[a%32*4]),n=new Float64Array(e).map(a=>kr[a%32*4+1]),i=new Float64Array(e).map(a=>kr[a%32*4+2]),s=new Float64Array(e).map(a=>kr[a%32*4+3]);return function(a,o,c,l){let u,p,m,f,x;const w=(a+o+c+l)*dd,g=Pr(a+w),v=Pr(o+w),_=Pr(c+w),S=Pr(l+w),M=(g+v+_+S)*De,T=g-M,E=v-M,P=_-M,z=S-M,R=a-T,A=o-E,B=c-P,O=l-z;let U=0,L=0,G=0,H=0;R>A?U++:L++,R>B?U++:G++,R>O?U++:H++,A>B?L++:G++,A>O?L++:H++,B>O?G++:H++;const Q=U>=3?1:0,j=L>=3?1:0,pe=G>=3?1:0,ie=H>=3?1:0,he=U>=2?1:0,oe=L>=2?1:0,le=G>=2?1:0,xe=H>=2?1:0,ge=U>=1?1:0,de=L>=1?1:0,se=G>=1?1:0,Ge=H>=1?1:0,Ie=R-Q+De,Ee=A-j+De,it=B-pe+De,ze=O-ie+De,ve=R-he+2*De,ue=A-oe+2*De,lt=B-le+2*De,Pe=O-xe+2*De,fe=R-ge+3*De,Ke=A-de+3*De,bt=B-se+3*De,xt=O-Ge+3*De,Qe=R-1+4*De,wt=A-1+4*De,ut=B-1+4*De,ht=O-1+4*De,rt=g&255,ke=v&255,We=_&255,st=S&255;let He=.6-R*R-A*A-B*B-O*O;if(He<0)u=0;else{const ae=rt+e[ke+e[We+e[st]]];He*=He,u=He*He*(t[ae]*R+n[ae]*A+i[ae]*B+s[ae]*O)}let ee=.6-Ie*Ie-Ee*Ee-it*it-ze*ze;if(ee<0)p=0;else{const ae=rt+Q+e[ke+j+e[We+pe+e[st+ie]]];ee*=ee,p=ee*ee*(t[ae]*Ie+n[ae]*Ee+i[ae]*it+s[ae]*ze)}let _t=.6-ve*ve-ue*ue-lt*lt-Pe*Pe;if(_t<0)m=0;else{const ae=rt+he+e[ke+oe+e[We+le+e[st+xe]]];_t*=_t,m=_t*_t*(t[ae]*ve+n[ae]*ue+i[ae]*lt+s[ae]*Pe)}let Ft=.6-fe*fe-Ke*Ke-bt*bt-xt*xt;if(Ft<0)f=0;else{const ae=rt+ge+e[ke+de+e[We+se+e[st+Ge]]];Ft*=Ft,f=Ft*Ft*(t[ae]*fe+n[ae]*Ke+i[ae]*bt+s[ae]*xt)}let Tt=.6-Qe*Qe-wt*wt-ut*ut-ht*ht;if(Tt<0)x=0;else{const ae=rt+1+e[ke+1+e[We+1+e[st+1]]];Tt*=Tt,x=Tt*Tt*(t[ae]*Qe+n[ae]*wt+i[ae]*ut+s[ae]*ht)}return 27*(u+p+m+f+x)}}function fd(r){const e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){const n=t+~~(r()*(256-t)),i=e[t];e[t]=e[n],e[n]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var md=Object.defineProperty,yd=(r,e,t)=>e in r?md(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Me=(r,e,t)=>(yd(r,typeof e!="symbol"?e+"":e,t),t);(function(){class r{}class e extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class t extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class n extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class i extends r{constructor(d,y="unrestricted"){super(),Me(this,"type"),Me(this,"value"),this.value=d,this.type=y}}class s extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class a extends r{}class o extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class c extends r{}class l extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class u extends r{constructor(d,y="integer"){super(),Me(this,"value"),Me(this,"type"),this.value=d,this.type=y}}class p extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class m extends r{constructor(d,y,b){super(),Me(this,"value"),Me(this,"type"),Me(this,"unit"),this.value=d,this.type=y,this.unit=b}}class f extends r{}class x extends r{}class w extends r{}class g extends r{}class v extends r{}class _ extends r{}class S extends r{}class M extends r{}class T extends r{}class E extends r{}class P extends r{}class z extends r{}class R{constructor(d){Me(this,"input"),Me(this,"index",0),this.input=d}consume(){const d=this.input.codePointAt(this.index);return d!==void 0&&(this.index+=String.fromCodePoint(d).length),d}reconsume(d){d!==void 0&&(this.index-=String.fromCodePoint(d).length)}peek(){const d=[];let y=this.index;for(let b=0;b<3&&y<this.input.length;b++){const C=this.input.codePointAt(y);d.push(C),y+=String.fromCodePoint(C).length}return d}}function A(h){return h===10}function B(h){return A(h)||h===8192||h===32}function O(h){return h>=48&&h<=57}function U(h){return O(h)||h>=65&&h<=70||h>=97&&h<=102}function L(h){return function(d){return function(y){return y>=65&&y<=90}(d)||function(y){return y>=97&&y<=122}(d)}(h)||function(d){return d>=128}(h)||h===95}function G(h){return L(h)||O(h)||h===45}function H(h){return h>=0&&h<=8||h===11||h>=14&&h<=31||h===127}function Q(h,d){return h===92&&!A(d)}function j(h,d,y){return h===45?L(d)||d===45||Q(d,y):!!L(h)||h===92&&Q(h,d)}function pe(h,d,y){return h===43||h===45?O(d)||d===46&&O(y):O(h===46?d:h)}function ie(h){const d=h.consume();if(U(d)){let y=[d];for(;U(...h.peek())&&y.length<5;)y.push(h.consume());B(...h.peek())&&h.consume();const b=parseInt(String.fromCodePoint(...y),16);return b===0||b>1114111?65533:b}return d===void 0?65533:d}function he(h,d){const y=new s("");for(;;){const b=h.consume();if(b===d||b===void 0)return y;if(b===10)return h.reconsume(b),new a;if(b===92){const C=h.peek()[0];C===void 0||(A(C)?h.consume():y.value+=String.fromCodePoint(ie(h)))}else y.value+=String.fromCodePoint(b)}}function oe(h){let d="";for(;;){const y=h.consume();if(G(y))d+=String.fromCodePoint(y);else{if(!Q(...h.peek()))return h.reconsume(y),d;d+=String.fromCodePoint(ie(h))}}}function le(h){let d=function(y){let b="integer",C="";for([43,45].includes(y.peek()[0])&&(C+=String.fromCodePoint(y.consume()));O(...y.peek());)C+=String.fromCodePoint(y.consume());if(y.peek()[0]===46&&O(y.peek()[1]))for(C+=String.fromCodePoint(y.consume(),y.consume()),b="number";O(...y.peek());)C+=String.fromCodePoint(y.consume());return[69,101].includes(y.peek()[0])&&([45,43].includes(y.peek()[1])&&O(y.peek()[2])?(C+=String.fromCodePoint(y.consume(),y.consume(),y.consume()),b="number"):O(y.peek()[1])&&(C+=String.fromCodePoint(y.consume(),y.consume()),b="number")),{value:parseFloat(C),type:b}}(h);return j(...h.peek())?new m(d.value,d.type,oe(h)):h.peek()[0]===37?(h.consume(),new p(d.value)):new u(d.value,d.type)}function xe(h){for(;;){const d=h.consume();if(d===41||d===void 0)return;Q(...h.peek())&&ie(h)}}function ge(h){const d=oe(h);if(d.match(/url/i)&&h.peek()[0]===40){for(h.consume();B(h.peek()[0])&&B(h.peek()[1]);)h.consume();return[34,39].includes(h.peek()[0])||B(h.peek()[0])&&[34,39].includes(h.peek()[1])?new t(d):function(y){const b=new o("");for(;B(...y.peek());)y.consume();for(;;){const C=y.consume();if(C===41||C===void 0)return b;if(B(C)){for(;B(...y.peek());)y.consume();return y.peek()[0]===41||y.peek()[0]===void 0?(y.consume(),b):(xe(y),new c)}if([34,39,40].includes(C)||H(C))return xe(y),new c;if(C===92){if(!Q(...y.peek()))return xe(y),new c;b.value+=ie(y)}else b.value+=String.fromCodePoint(C)}}(h)}return h.peek()[0]===40?(h.consume(),new t(d)):new e(d)}function de(h){const d=h.consume(),y=h.peek();if(B(d)){for(;B(...h.peek());)h.consume();return new f}if(d===34)return he(h,d);if(d===35){if(G(y[0])||Q(...y)){const b=new i;return j(...y)&&(b.type="id"),b.value=oe(h),b}return new l(String.fromCodePoint(d))}return d===39?he(h,d):d===40?new T:d===41?new E:d===43?pe(...y)?(h.reconsume(d),le(h)):new l(String.fromCodePoint(d)):d===44?new _:d===45?pe(...h.peek())?(h.reconsume(d),le(h)):h.peek()[0]===45&&h.peek()[1]===62?(h.consume(),h.consume(),new w):j(...h.peek())?(h.reconsume(d),ge(h)):new l(String.fromCodePoint(d)):d===46?pe(...h.peek())?(h.reconsume(d),le(h)):new l(String.fromCodePoint(d)):d===58?new g:d===59?new v:d===60?y[0]===33&&y[1]===45&&y[2]===45?(h.consume(),h.consume(),h.consume(),new x):new l(String.fromCodePoint(d)):d===64?j(...y)?new n(oe(h)):new l(String.fromCodePoint(d)):d===91?new S:d===92?Q(...y)?(h.reconsume(d),ge(h)):new l(String.fromCodePoint(d)):d===93?new M:d===123?new P:d===125?new z:O(d)?(h.reconsume(d),le(h)):L(d)?(h.reconsume(d),ge(h)):d===void 0?void 0:new l(String.fromCodePoint(d))}const se=new Set(["px","deg","s","hz","dppx","number","fr"]);function Ge(h){return se.has(h.toLowerCase())}function Ie(h,d){if(["x","y"].includes(h))return h;if(!d)throw new Error("To determine the normalized axis the computedStyle of the source is required.");const y=d.writingMode=="horizontal-tb";if(h==="block")h=y?"y":"x";else{if(h!=="inline")throw new TypeError(`Invalid axis \u201C${h}\u201D`);h=y?"x":"y"}return h}function Ee(h){const d=[];let y=0;function b(){let k=0;const I=y;for(;y<h.length;){const D=h.slice(y,y+1);if(/\s/.test(D)&&k===0)break;if(D==="(")k+=1;else if(D===")"&&(k-=1,k===0)){y++;break}y++}return h.slice(I,y)}function C(){for(;/\s/.test(h.slice(y,y+1));)y++}for(;y<h.length;){const k=h.slice(y,y+1);/\s/.test(k)?C():d.push(b())}return d}function it(h,d){return h.reduce((y,b)=>(y.has(b[d])?y.get(b[d]).push(b):y.set(b[d],[b]),y),new Map)}function ze(h,d){const y=[],b=[];for(const C of h)d(C)?y.push(C):b.push(C);return[y,b]}function ve(h,d={}){function y(b){return Array.from(b).map(C=>ve(C,d))}if(h instanceof CSSUnitValue){if(h.unit==="percent"&&d.percentageReference){const C=h.value/100*d.percentageReference.value,k=d.percentageReference.unit;return new CSSUnitValue(C,k)}const b=h.toSum();if(b&&b.values.length===1&&(h=b.values[0]),h instanceof CSSUnitValue&&h.unit==="em"&&d.fontSize&&(h=new CSSUnitValue(h.value*d.fontSize.value,d.fontSize.unit)),h instanceof CSSKeywordValue){if(h.value==="e")return new CSSUnitValue(Math.E,"number");if(h.value==="pi")return new CSSUnitValue(Math.PI,"number")}return h}if(!h.operator)return h;switch(h.operator){case"sum":h=new CSSMathSum(...y(h.values));break;case"product":h=new CSSMathProduct(...y(h.values));break;case"negate":h=new CSSMathNegate(ve(h.value,d));break;case"clamp":h=new CSSMathClamp(ve(h.lower,d),ve(h.value,d),ve(h.upper,d));break;case"invert":h=new CSSMathInvert(ve(h.value,d));break;case"min":h=new CSSMathMin(...y(h.values));break;case"max":h=new CSSMathMax(...y(h.values))}if(h instanceof CSSMathMin||h instanceof CSSMathMax){const b=Array.from(h.values);if(b.every(C=>C instanceof CSSUnitValue&&C.unit!=="percent"&&Ge(C.unit)&&C.unit===b[0].unit)){const C=Math[h.operator].apply(Math,b.map(({value:k})=>k));return new CSSUnitValue(C,b[0].unit)}}if(h instanceof CSSMathMin||h instanceof CSSMathMax){const b=Array.from(h.values),[C,k]=ze(b,D=>D instanceof CSSUnitValue&&D.unit!=="percent"),I=Array.from(it(C,"unit").values());if(I.some(D=>D.length>0)){const D=I.map(N=>{const F=Math[h.operator].apply(Math,N.map(({value:X})=>X));return new CSSUnitValue(F,N[0].unit)});h=h instanceof CSSMathMin?new CSSMathMin(...D,...k):new CSSMathMax(...D,...k)}return b.length===1?b[0]:h}if(h instanceof CSSMathNegate)return h.value instanceof CSSUnitValue?new CSSUnitValue(0-h.value.value,h.value.unit):h.value instanceof CSSMathNegate?h.value.value:h;if(h instanceof CSSMathInvert)return h.value instanceof CSSMathInvert?h.value.value:h;if(h instanceof CSSMathSum){let b=function(k){const I=k.filter(D=>D instanceof CSSUnitValue);return[...k.filter(D=>!(D instanceof CSSUnitValue)),...Array.from(it(I,"unit").entries()).map(([D,N])=>{const F=N.reduce((X,{value:Z})=>X+Z,0);return new CSSUnitValue(F,D)})]},C=[];for(const k of h.values)k instanceof CSSMathSum?C.push(...k.values):C.push(k);return C=b(C),C.length===1?C[0]:new CSSMathSum(...C)}if(h instanceof CSSMathProduct){let b=[];for(const I of h.values)I instanceof CSSMathProduct?b.push(...I.values):b.push(I);const[C,k]=ze(b,I=>I instanceof CSSUnitValue&&I.unit==="number");if(C.length>1){const I=C.reduce((D,{value:N})=>D*N,1);b=[new CSSUnitValue(I,"number"),...k]}if(b.length===2){let I,D;for(const N of b)N instanceof CSSUnitValue&&N.unit==="number"?I=N:N instanceof CSSMathSum&&[...N.values].every(F=>F instanceof CSSUnitValue)&&(D=N);if(I&&D)return new CSSMathSum(...[...D.values].map(N=>new CSSUnitValue(N.value*I.value,N.unit)))}if(b.every(I=>I instanceof CSSUnitValue&&Ge(I.unit)||I instanceof CSSMathInvert&&I.value instanceof CSSUnitValue&&Ge(I.value.unit))){const I=new CSSMathProduct(...b).toSum();if(I&&I.values.length===1)return I.values[0]}return new CSSMathProduct(...b)}return h}const ue=null,lt=["percent","length","angle","time","frequency","resolution","flex"],Pe={fontRelativeLengths:{units:new Set(["em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh"])},viewportRelativeLengths:{units:new Set(["vw","lvw","svw","dvw","vh","lvh","svh","dvh","vi","lvi","svi","dvi","vb","lvb","svb","dvb","vmin","lvmin","svmin","dvmin","vmax","lvmax","svmax","dvmax"])},absoluteLengths:{units:new Set(["cm","mm","Q","in","pt","pc","px"]),compatible:!0,canonicalUnit:"px",ratios:{cm:96/2.54,mm:96/2.54/10,Q:96/2.54/40,in:96,pc:16,pt:96/72,px:1}},angle:{units:new Set(["deg","grad","rad","turn"]),compatible:!0,canonicalUnit:"deg",ratios:{deg:1,grad:.9,rad:180/Math.PI,turn:360}},time:{units:new Set(["s","ms"]),compatible:!0,canonicalUnit:"s",ratios:{s:1,ms:.001}},frequency:{units:new Set(["hz","khz"]),compatible:!0,canonicalUnit:"hz",ratios:{hz:1,khz:1e3}},resolution:{units:new Set(["dpi","dpcm","dppx"]),compatible:!0,canonicalUnit:"dppx",ratios:{dpi:1/96,dpcm:2.54/96,dppx:1}}},fe=new Map;for(const h of Object.values(Pe))if(h.compatible)for(const d of h.units)fe.set(d,h);function Ke(h){return fe.get(h)}function bt(h,d){const y={...h};for(const b of Object.keys(d))y[b]?y[b]+=d[b]:y[b]=d[b];return y}function xt(h){return h==="number"?{}:h==="percent"?{percent:1}:Pe.absoluteLengths.units.has(h)||Pe.fontRelativeLengths.units.has(h)||Pe.viewportRelativeLengths.units.has(h)?{length:1}:Pe.angle.units.has(h)?{angle:1}:Pe.time.units.has(h)?{time:1}:Pe.frequency.units.has(h)?{frequency:1}:Pe.resolution.units.has(h)?{resolution:1}:h==="fr"?{flex:1}:ue}function Qe(h){if(h instanceof CSSUnitValue){let{unit:d,value:y}=h;const b=Ke(h.unit);return b&&d!==b.canonicalUnit&&(y*=b.ratios[d],d=b.canonicalUnit),d==="number"?[[y,{}]]:[[y,{[d]:1}]]}if(h instanceof CSSMathInvert){if(!(h.value instanceof CSSUnitValue))throw new Error("Not implemented");const d=Qe(h.value);if(d===ue||d.length>1)return ue;const y=d[0],b={};for(const[C,k]of Object.entries(y[1]))b[C]=-1*k;return d[0]=[1/y[0],b],d}if(h instanceof CSSMathProduct){let d=[[1,{}]];for(const y of h.values){const b=Qe(y),C=[];if(b===ue)return ue;for(const k of d)for(const I of b)C.push([k[0]*I[0],bt(k[1],I[1])]);d=C}return d}throw new Error("Not implemented")}function wt(h,d){if(xt(d)===ue)throw new SyntaxError("The string did not match the expected pattern.");const y=Qe(h);if(!y)throw new TypeError;if(y.length>1)throw new TypeError("Sum has more than one item");const b=function(C,k){const I=C.unit,D=C.value,N=Ke(I),F=Ke(k);return!F||N!==F?ue:new CSSUnitValue(D*F.ratios[I]/F.ratios[k],k)}(ut(y[0]),d);if(b===ue)throw new TypeError;return b}function ut(h){const[d,y]=h,b=Object.entries(y);if(b.length>1)return ue;if(b.length===0)return new CSSUnitValue(d,"number");const C=b[0];return C[1]!==1?ue:new CSSUnitValue(d,C[0])}function ht(h,...d){if(d&&d.length)throw new Error("Not implemented");const y=Qe(h).map(b=>ut(b));if(y.some(b=>b===ue))throw new TypeError("Type error");return new CSSMathSum(...y)}function rt(h,d){if(h.percentHint&&d.percentHint&&h.percentHint!==d.percentHint)return ue;const y={...h,percentHint:h.percentHint??d.percentHint};for(const b of lt)d[b]&&(y[b]??(y[b]=0),y[b]+=d[b]);return y}class ke{constructor(d,y){Me(this,"name"),Me(this,"values"),this.name=d,this.values=y}}class We{constructor(d,y){Me(this,"value"),Me(this,"associatedToken"),this.value=d,this.associatedToken=y}}function st(h){if(Array.isArray(h))return h;if(typeof h=="string")return function(d){const y=new R(d),b=[];for(;;){const C=de(y);if(C===void 0)return b;b.push(C)}}(h);throw new TypeError("Invalid input type "+typeof h)}function He(h){const d=h.shift();return d instanceof P||d instanceof S||d instanceof T?function(y,b){let C;if(b instanceof P)C=z;else if(b instanceof T)C=E;else{if(!(b instanceof S))return;C=M}const k=new We([],b);for(;;){const I=y.shift();if(I instanceof C||I===void 0)return k;y.unshift(I),k.value.push(He(y))}}(h,d):d instanceof t?function(y,b){const C=new ke(y.value,[]);for(;;){const k=b.shift();if(k instanceof E||k===void 0)return C;b.unshift(k),C.values.push(He(b))}}(d,h):d}function ee(h){if(h instanceof T||h instanceof E)return 6;if(h instanceof l)switch(h.value){case"*":case"/":return 4;case"+":case"-":return 2}}function _t(h){return h[h.length-1]}function Ft(h,d,y){const b=["+","-"].includes(h.value)?"ADDITION":"MULTIPLICATION",C=d.type===b?d.values:[d],k=y.type===b?y.values:[y];return h.value==="-"?k[0]={type:"NEGATE",value:k[0]}:h.value==="/"&&(k[0]={type:"INVERT",value:k[0]}),{type:b,values:[...C,...k]}}function Tt(h){if(h.type==="ADDITION")return new CSSMathSum(...h.values.map(d=>Tt(d)));if(h.type==="MULTIPLICATION")return new CSSMathProduct(...h.values.map(d=>Tt(d)));if(h.type==="NEGATE")return new CSSMathNegate(Tt(h.value));if(h.type==="INVERT")return new CSSMathInvert(Tt(h.value));if(h instanceof We)return ae(new ke("calc",h.value));if(h instanceof e){if(h.value==="e")return new CSSUnitValue(Math.E,"number");if(h.value==="pi")return new CSSUnitValue(Math.PI,"number");throw new SyntaxError("Invalid math expression")}return Eo(h)}function ae(h){if(h.name==="min"||h.name==="max"){const b=h.values.filter(C=>!(C instanceof f||C instanceof _)).map(C=>ve(ae(new ke("calc",C))));return h.name==="min"?new CSSMathMin(...b):new CSSMathMax(...b)}if(h.name!=="calc")return null;const d=Tt(function(b){const C=[],k=[];for(;b.length;){const I=b.shift();if(I instanceof u||I instanceof m||I instanceof p||I instanceof ke||I instanceof We||I instanceof e)k.push(I);else if(I instanceof l&&["*","/","+","-"].includes(I.value)){for(;C.length&&!(_t(C)instanceof T)&&ee(_t(C))>ee(I);){const D=C.pop(),N=k.pop(),F=k.pop();k.push(Ft(D,F,N))}C.push(I)}else if(I instanceof T)C.push(I);else if(I instanceof E){if(!C.length)return null;for(;!(_t(C)instanceof T);){const D=C.pop(),N=k.pop(),F=k.pop();k.push(Ft(D,F,N))}if(!(_t(C)instanceof T))return null;C.pop()}else if(!(I instanceof f))return null}for(;C.length;){if(_t(C)instanceof T)return null;const I=C.pop(),D=k.pop(),N=k.pop();k.push(Ft(I,N,D))}return k[0]}([...h.values]));let y;try{y=ve(d)}catch{new CSSStyleSheet().insertRule("error",0)}return y instanceof CSSUnitValue?new CSSMathSum(y):y}function Eo(h){return h instanceof ke&&["calc","min","max","clamp"].includes(h.name)?ae(h):h instanceof u&&h.value===0&&!h.unit?new CSSUnitValue(0,"px"):h instanceof u?new CSSUnitValue(h.value,"number"):h instanceof p?new CSSUnitValue(h.value,"percent"):h instanceof m?new CSSUnitValue(h.value,h.unit):void 0}function xl(h){const d=function(y){const b=st(y);for(;b[0]instanceof f;)b.shift();if(b[0]===void 0)return null;const C=He(b);for(;b[0]instanceof f;)b.shift();return b[0]===void 0?C:null}(h);return d===null&&new CSSStyleSheet().insertRule("error",0),d instanceof u||d instanceof p||d instanceof m||d instanceof ke||new CSSStyleSheet().insertRule("error",0),d instanceof m&&xt(d.unit)===null&&new CSSStyleSheet().insertRule("error",0),Eo(d)}(function(){let h=new WeakMap;function d(k){const I=[];for(let N=0;N<k.length;N++)I[N]=typeof(D=k[N])=="number"?new CSSUnitValue(D,"number"):D;var D;return I}class y{static parse(I){return I instanceof y?I:ve(xl(I),{})}}class b extends y{constructor(I,D,N,F){super(),h.set(this,{values:d(I),operator:D,name:N||D,delimiter:F||", "})}get operator(){return h.get(this).operator}get values(){return h.get(this).values}toString(){const I=h.get(this);return`${I.name}(${I.values.join(I.delimiter)})`}}const C={CSSNumericValue:y,CSSMathValue:b,CSSUnitValue:class extends y{constructor(k,I){super(),h.set(this,{value:k,unit:I})}get value(){return h.get(this).value}set value(k){h.get(this).value=k}get unit(){return h.get(this).unit}to(k){return wt(this,k)}toSum(...k){return ht(this,...k)}type(){return xt(h.get(this).unit)}toString(){const k=h.get(this);return`${k.value}${function(I){switch(I){case"percent":return"%";case"number":return"";default:return I.toLowerCase()}}(k.unit)}`}},CSSKeywordValue:class{constructor(k){this.value=k}toString(){return this.value.toString()}},CSSMathSum:class extends b{constructor(k){super(arguments,"sum","calc"," + ")}},CSSMathProduct:class extends b{constructor(k){super(arguments,"product","calc"," * ")}toSum(...k){return ht(this,...k)}type(){return h.get(this).values.map(k=>k.type()).reduce(rt)}},CSSMathNegate:class extends b{constructor(k){super([arguments[0]],"negate","-")}get value(){return h.get(this).values[0]}type(){return this.value.type()}},CSSMathInvert:class extends b{constructor(k){super([1,arguments[0]],"invert","calc"," / ")}get value(){return h.get(this).values[1]}type(){return function(k){const I={};for(const D of lt)I[D]=-1*k[D];return I}(h.get(this).values[1].type())}},CSSMathMax:class extends b{constructor(){super(arguments,"max")}},CSSMathMin:class extends b{constructor(){super(arguments,"min")}}};if(!window.CSS&&!Reflect.defineProperty(window,"CSS",{value:{}}))throw Error("Error installing CSSOM support");window.CSSUnitValue||["number","percent","em","ex","px","cm","mm","in","pt","pc","Q","vw","vh","vmin","vmax","rems","ch","deg","rad","grad","turn","ms","s","Hz","kHz","dppx","dpi","dpcm","fr"].forEach(k=>{if(!Reflect.defineProperty(CSS,k,{value:I=>new CSSUnitValue(I,k)}))throw Error(`Error installing CSS.${k}`)});for(let[k,I]of Object.entries(C))if(!(k in window)&&!Reflect.defineProperty(window,k,{value:I}))throw Error(`Error installing CSSOM support for ${k}`)})();const Po="block";let Fe=new WeakMap,Vt=new WeakMap;const er=["entry","exit","cover","contain","entry-crossing","exit-crossing"];function ko(h){return h===document.scrollingElement?document:h}function hn(h){is(h);let d=Fe.get(h).animations;if(d.length===0)return;let y=h.currentTime;for(let b=0;b<d.length;b++)d[b].tickAnimation(y)}function Ro(h,d){if(!h)return null;const y=Vt.get(h).sourceMeasurements,b=getComputedStyle(h);let C=y.scrollTop;return Ie(d,b)==="x"&&(C=Math.abs(y.scrollLeft)),C}function ns(h,d){const y=ve(h,d);if(y instanceof CSSUnitValue){if(y.unit==="px")return y.value;throw TypeError("Unhandled unit type "+y.unit)}throw TypeError("Unsupported value type: "+typeof h)}function is(h){if(!(h instanceof kn))return void function(y){const b=Fe.get(y);if(!b.anonymousSource)return;const C=Oo(b.anonymousSource,b.anonymousTarget);Xn(y,C)}(h);const d=h.subject;if(!d||getComputedStyle(d).display=="none")return void Xn(h,null);Xn(h,ls(d))}function Ao(h){return["block","inline","x","y"].includes(h)}function rs(h){const d=getComputedStyle(h);return{scrollLeft:h.scrollLeft,scrollTop:h.scrollTop,scrollWidth:h.scrollWidth,scrollHeight:h.scrollHeight,clientWidth:h.clientWidth,clientHeight:h.clientHeight,writingMode:d.writingMode,direction:d.direction,scrollPaddingTop:d.scrollPaddingTop,scrollPaddingBottom:d.scrollPaddingBottom,scrollPaddingLeft:d.scrollPaddingLeft,scrollPaddingRight:d.scrollPaddingRight}}function ss(h,d){if(!h||!d)return;let y=0,b=0,C=d;const k=h.offsetParent;for(;C&&C!=k;)b+=C.offsetLeft,y+=C.offsetTop,C=C.offsetParent;b-=h.offsetLeft+h.clientLeft,y-=h.offsetTop+h.clientTop;const I=getComputedStyle(d);return{top:y,left:b,offsetWidth:d.offsetWidth,offsetHeight:d.offsetHeight,fontSize:I.fontSize}}function tr(h){let d=Vt.get(h);d.sourceMeasurements=rs(h);for(const y of d.timelineRefs){const b=y.deref();b instanceof kn&&(Fe.get(b).subjectMeasurements=ss(h,b.subject))}d.updateScheduled||(setTimeout(()=>{for(const y of d.timelineRefs){const b=y.deref();b&&hn(b)}d.updateScheduled=!1}),d.updateScheduled=!0)}function Xn(h,d){const y=Fe.get(h),b=y.source;if(b!=d){if(b){const C=Vt.get(b);if(C){C.timelineRefs.delete(h);const k=Array.from(C.timelineRefs).filter(I=>I.deref()===void 0);for(const I of k)C.timelineRefs.delete(I);C.timelineRefs.size===0&&(C.disconnect(),Vt.delete(b))}}if(y.source=d,d){let C=Vt.get(d);if(!C){C={timelineRefs:new Set,sourceMeasurements:rs(d)},Vt.set(d,C);const k=new ResizeObserver(N=>{for(const F of N)tr(y.source)});k.observe(d);for(const N of d.children)k.observe(N);const I=new MutationObserver(N=>{for(const F of N)tr(F.target)});I.observe(d,{attributes:!0,attributeFilter:["style","class"]});const D=()=>{C.sourceMeasurements.scrollLeft=d.scrollLeft,C.sourceMeasurements.scrollTop=d.scrollTop;for(const N of C.timelineRefs){const F=N.deref();F&&hn(F)}};ko(d).addEventListener("scroll",D),C.disconnect=()=>{k.disconnect(),I.disconnect(),ko(d).removeEventListener("scroll",D)}}C.timelineRefs.add(new WeakRef(h))}}}function os(h,d){let y=Fe.get(h).animations;for(let b=0;b<y.length;b++)y[b].animation==d&&y.splice(b,1)}function as(h,d,y){let b=Fe.get(h).animations;for(let C=0;C<b.length;C++)if(b[C].animation==d)return;b.push({animation:d,tickAnimation:y}),queueMicrotask(()=>{hn(h)})}class qe{constructor(d){if(Fe.set(this,{source:null,axis:Po,anonymousSource:d?d.anonymousSource:null,anonymousTarget:d?d.anonymousTarget:null,subject:null,inset:null,animations:[],subjectMeasurements:null}),Xn(this,d&&d.source!==void 0?d.source:document.scrollingElement),d&&d.axis!==void 0&&d.axis!=Po){if(!Ao(d.axis))throw TypeError("Invalid axis");Fe.get(this).axis=d.axis}hn(this)}set source(d){Xn(this,d),hn(this)}get source(){return Fe.get(this).source}set axis(d){if(!Ao(d))throw TypeError("Invalid axis");Fe.get(this).axis=d,hn(this)}get axis(){return Fe.get(this).axis}get duration(){return CSS.percent(100)}get phase(){const d=this.source;if(!d)return"inactive";let y=getComputedStyle(d);return y.display=="none"?"inactive":d==document.scrollingElement||y.overflow!="visible"&&y.overflow!="clip"?"active":"inactive"}get currentTime(){const d=this.source;if(!d||!d.isConnected||this.phase=="inactive")return null;const y=getComputedStyle(d);if(y.display==="inline"||y.display==="none")return null;const b=this.axis,C=Ro(d,b),k=function(I,D){const N=Vt.get(I).sourceMeasurements,F=getComputedStyle(I).writingMode=="horizontal-tb";return D==="block"?D=F?"y":"x":D==="inline"&&(D=F?"x":"y"),D==="y"?N.scrollHeight-N.clientHeight:D==="x"?N.scrollWidth-N.clientWidth:void 0}(d,b);return k>0?CSS.percent(100*C/k):CSS.percent(100)}get __polyfill(){return!0}}function cs(h,d){let y=h.parentElement;for(;y!=null;){if(d(y))return y;y=y.parentElement}}function Oo(h,d){switch(h){case"root":return document.scrollingElement;case"nearest":return ls(d);case"self":return d;default:throw new TypeError("Invalid ScrollTimeline Source Type.")}}function wl(h){switch(getComputedStyle(h).display){case"block":case"inline-block":case"list-item":case"table":case"table-caption":case"flow-root":case"flex":case"grid":return!0}return!1}function Io(h){const d=getComputedStyle(h);return d.transform!="none"||d.perspective!="none"||d.willChange=="transform"||d.willChange=="perspective"||d.filter!="none"||d.willChange=="filter"||d.backdropFilter!="none"}function _l(h){return getComputedStyle(h).position!="static"||Io(h)}function Tl(h){switch(getComputedStyle(h).position){case"static":case"relative":case"sticky":return cs(h,wl);case"absolute":return cs(h,_l);case"fixed":return cs(h,Io)}}function ls(h){if(h&&h.isConnected){for(;h=Tl(h);)switch(getComputedStyle(h)["overflow-x"]){case"auto":case"scroll":case"hidden":return h==document.body&&getComputedStyle(document.scrollingElement).overflow=="visible"?document.scrollingElement:h}return document.scrollingElement}}function Yn(h,d){const y=Fe.get(h),b=y.subjectMeasurements,C=Vt.get(y.source).sourceMeasurements;return h.phase==="inactive"?null:h instanceof kn?us(d,C,b,y.axis,y.inset):null}function us(h,d,y,b,C){const k=d.direction=="rtl"||d.writingMode=="vertical-rl";let I,D,N={fontSize:y.fontSize};Ie(b,d)==="x"?(I=y.offsetWidth,D=y.left,N.scrollPadding=[d.scrollPaddingLeft,d.scrollPaddingRight],k&&(D+=d.scrollWidth-d.clientWidth,N.scrollPadding=[d.scrollPaddingRight,d.scrollPaddingLeft]),N.containerSize=d.clientWidth):(I=y.offsetHeight,D=y.top,N.scrollPadding=[d.scrollPaddingTop,d.scrollPaddingBottom],N.containerSize=d.clientHeight);const F=function(fs,or){const Nl={start:0,end:0};if(!fs)return Nl;const[Ul,Dl]=[fs.start,fs.end].map((Xo,Yo)=>Xo==="auto"?or.scrollPadding[Yo]==="auto"?0:parseFloat(or.scrollPadding[Yo]):ns(Xo,{percentageReference:CSS.px(or.containerSize),fontSize:CSS.px(parseFloat(or.fontSize))}));return{start:Ul,end:Dl}}(C,N),X=D-N.containerSize+F.end,Z=D+I-F.start,K=X+I,me=Z-I,_e=Math.min(K,me),$e=Math.max(K,me);let Mt,dt;const qo=I>N.containerSize-F.start-F.end;switch(h){case"cover":Mt=X,dt=Z;break;case"contain":Mt=_e,dt=$e;break;case"entry":Mt=X,dt=_e;break;case"exit":Mt=$e,dt=Z;break;case"entry-crossing":Mt=X,dt=qo?$e:_e;break;case"exit-crossing":Mt=qo?_e:$e,dt=Z}return{start:Mt,end:dt}}function zo(h,d){if(h instanceof kn){const{rangeName:y,offset:b}=d;return Bo(Yn(h,y),b,Yn(h,"cover"),h.subject)}if(h instanceof qe){const{axis:y,source:b}=h,{sourceMeasurements:C}=Vt.get(b);let k;return k=Ie(y,C)==="x"?C.scrollWidth-C.clientWidth:C.scrollHeight-C.clientHeight,ns(d,{percentageReference:CSS.px(k)})/k}unsupportedTimeline(h)}function Bo(h,d,y,b){if(!h||!y)return 0;let C=getComputedStyle(b);return(ns(d,{percentageReference:CSS.px(h.end-h.start),fontSize:CSS.px(parseFloat(C.fontSize))})+h.start-y.start)/(y.end-y.start)}let kn=class extends qe{constructor(h){super(h);const d=Fe.get(this);d.subject=h&&h.subject?h.subject:void 0,h&&h.inset&&(d.inset=function(y){if(!y)return{start:0,end:0};let b;if(b=typeof y=="string"?Ee(y).map(C=>{if(C==="auto")return"auto";try{return CSSNumericValue.parse(C)}catch{throw TypeError(`Could not parse inset "${y}"`)}}):Array.isArray(y)?y:[y],b.length===0||b.length>2)throw TypeError("Invalid inset");for(const C of b){if(C==="auto")continue;const k=C.type();if(k.length!==1&&k.percent!==1)throw TypeError("Invalid inset")}return{start:b[0],end:b[1]??b[0]}}(h.inset)),d.subject&&(new ResizeObserver(()=>{tr(d.source)}).observe(d.subject),new MutationObserver(()=>{tr(d.source)}).observe(d.subject,{attributes:!0,attributeFilter:["class","style"]})),is(this),d.subjectMeasurements=ss(d.source,d.subject),hn(this)}get source(){return is(this),Fe.get(this).source}set source(h){throw new Error("Cannot set the source of a view timeline")}get subject(){return Fe.get(this).subject}get axis(){return Fe.get(this).axis}get currentTime(){const h=Ro(this.source,this.axis);if(h==null)return null;const d=Yn(this,"cover");if(!d)return null;const y=(h-d.start)/(d.end-d.start);return CSS.percent(100*y)}get startOffset(){return CSS.px(Yn(this,"cover").start)}get endOffset(){return CSS.px(Yn(this,"cover").end)}};const Ml=document.getAnimations,Cl=window.Element.prototype.getAnimations,El=window.Element.prototype.animate,No=window.Animation;class Rn{constructor(){this.state="pending",this.nativeResolve=this.nativeReject=null,this.promise=new Promise((d,y)=>{this.nativeResolve=d,this.nativeReject=y})}resolve(d){this.state="resolved",this.nativeResolve(d)}reject(d){this.state="rejected",this.promise.catch(()=>{}),this.nativeReject(d)}}function Zn(h){h.readyPromise=new Rn,requestAnimationFrame(()=>{var d;(((d=h.timeline)==null?void 0:d.currentTime)??null)!==null&&(nr(h),h.pendingTask!=="play"||h.startTime===null&&h.holdTime===null?h.pendingTask==="pause"&&Lo(h):Do(h))})}function Uo(){return new DOMException("The user aborted a request","AbortError")}function dn(h,d){if(d===null)return d;if(typeof d!="number")throw new DOMException(`Unexpected value: ${d}. Cannot convert to CssNumberish`,"InvalidStateError");const y=h.rangeDuration??100,b=Jt(h),C=b?y*d/b:0;return CSS.percent(C)}function Se(h,d){if(h.timeline){if(d===null)return d;if(d.unit==="percent"){const y=h.rangeDuration??100,b=Jt(h);return d.value*b/y}throw new DOMException("CSSNumericValue must be a percentage for progress based animations.","NotSupportedError")}{if(d==null||typeof d=="number")return d;const y=d.to("ms");if(y)return y.value;throw new DOMException("CSSNumericValue must be either a number or a time value for time based animations.","InvalidStateError")}}function Do(h){const d=Se(h,h.timeline.currentTime);if(h.holdTime!=null)Ot(h),h.animation.playbackRate==0?h.startTime=d:(h.startTime=d-h.holdTime/h.animation.playbackRate,h.holdTime=null);else if(h.startTime!==null&&h.pendingPlaybackRate!==null){const y=(d-h.startTime)*h.animation.playbackRate;Ot(h);const b=h.animation.playbackRate;b==0?(h.holdTime=null,h.startTime=d):h.startTime=d-y/b}h.readyPromise&&h.readyPromise.state=="pending"&&h.readyPromise.resolve(h.proxy),jt(h,!1,!1),Gt(h),h.pendingTask=null}function Lo(h){const d=Se(h,h.timeline.currentTime);h.startTime!=null&&h.holdTime==null&&(h.holdTime=(d-h.startTime)*h.animation.playbackRate),Ot(h),h.startTime=null,h.readyPromise.resolve(h.proxy),jt(h,!1,!1),Gt(h),h.pendingTask=null}function Fo(h){if(!h.finishedPromise||h.finishedPromise.state!="pending"||h.proxy.playState!="finished")return;h.finishedPromise.resolve(h.proxy),h.animation.pause();const d=new CustomEvent("finish",{detail:{currentTime:h.proxy.currentTime,timelineTime:h.proxy.timeline.currentTime}});Object.defineProperty(d,"currentTime",{get:function(){return this.detail.currentTime}}),Object.defineProperty(d,"timelineTime",{get:function(){return this.detail.timelineTime}}),requestAnimationFrame(()=>{queueMicrotask(()=>{h.animation.dispatchEvent(d)})})}function An(h){return h.pendingPlaybackRate!==null?h.pendingPlaybackRate:h.animation.playbackRate}function Ot(h){h.pendingPlaybackRate!==null&&(h.animation.playbackRate=h.pendingPlaybackRate,h.pendingPlaybackRate=null)}function Vo(h){if(!h.timeline)return null;const d=Se(h,h.timeline.currentTime);if(d===null||h.startTime===null)return null;let y=(d-h.startTime)*h.animation.playbackRate;return y==-0&&(y=0),y}function jt(h,d,y){if(!h.timeline)return;let b=d?Se(h,h.proxy.currentTime):Vo(h);if(b&&h.startTime!=null&&!h.proxy.pending){const C=An(h),k=Jt(h);let I=h.previousCurrentTime;C>0&&b>=k&&h.previousCurrentTime!=null?((I===null||I<k)&&(I=k),h.holdTime=d?b:I):C<0&&b<=0?((I==null||I>0)&&(I=0),h.holdTime=d?b:I):C!=0&&(d&&h.holdTime!==null&&(h.startTime=function(D,N){if(!D.timeline)return null;const F=Se(D,D.timeline.currentTime);return F==null?null:F-N/D.animation.playbackRate}(h,h.holdTime)),h.holdTime=null)}Gt(h),h.previousCurrentTime=Se(h,h.proxy.currentTime),h.proxy.playState=="finished"?(h.finishedPromise||(h.finishedPromise=new Rn),h.finishedPromise.state=="pending"&&(y?Fo(h):Promise.resolve().then(()=>{Fo(h)}))):(h.finishedPromise&&h.finishedPromise.state=="resolved"&&(h.finishedPromise=new Rn),h.animation.playState!="paused"&&h.animation.pause())}function Jt(h){const d=function(b){const C=b.proxy.effect.getTiming();return b.normalizedTiming||C}(h),y=d.delay+d.endDelay+d.iterations*d.duration;return Math.max(0,y)}function Gt(h){if(h.timeline)if(h.startTime!==null){const d=h.timeline.currentTime;if(d==null)return;hs(h,(Se(h,d)-h.startTime)*h.animation.playbackRate)}else h.holdTime!==null&&hs(h,h.holdTime)}function hs(h,d){const y=h.timeline,b=h.animation.playbackRate,C=y.currentTime&&y.currentTime.value==(b<0?0:100)?b<0?.001:-.001:0;h.animation.currentTime=d+C}function ds(h,d){if(!h.timeline)return;const y=h.proxy.playState=="paused"&&h.proxy.pending;let b=!1,C=Se(h,h.proxy.currentTime);An(h)==0&&C==null&&(h.holdTime=0),C==null&&(h.autoAlignStartTime=!0),(h.proxy.playState==="finished"||y)&&(h.holdTime=null,h.startTime=null,h.autoAlignStartTime=!0),h.holdTime&&(h.startTime=null),h.pendingTask&&(h.pendingTask=null,b=!0),(h.holdTime!==null||h.autoAlignStartTime||y||h.pendingPlaybackRate!==null)&&(h.readyPromise&&!b&&(h.readyPromise=null),Gt(h),h.readyPromise||Zn(h),h.pendingTask="play",as(h.timeline,h.animation,ps.bind(h.proxy)),jt(h,!1,!1))}function ps(h){const d=Y.get(this);if(!d)return;if(h==null)return void(d.proxy.playState!=="paused"&&d.animation.playState!="idle"&&d.animation.cancel());nr(d),d.pendingTask&&requestAnimationFrame(()=>{d.pendingTask!=="play"||d.startTime===null&&d.holdTime===null?d.pendingTask==="pause"&&Lo(d):Do(d)});const y=this.playState;if(y=="running"||y=="finished"){const b=Se(d,h);hs(d,(b-Se(d,this.startTime))*this.playbackRate),jt(d,!1,!1)}}function jo(h){h.specifiedTiming=null}let Y=new WeakMap;window.addEventListener("pagehide",h=>{Y=new WeakMap},!1);let Jo=new WeakMap;function nr(h){if(!h.autoAlignStartTime||!h.timeline||!h.timeline.currentTime||h.proxy.playState==="idle"||h.proxy.playState==="paused"&&h.holdTime!==null)return;const d=h.rangeDuration;let y,b;try{y=CSS.percent(100*function(k){if(!k.animationRange)return 0;const I=k.animationRange.start==="normal"?Go(k.timeline):k.animationRange.start;return zo(k.timeline,I)}(h))}catch(k){y=CSS.percent(0),h.animationRange.start="normal",console.warn("Exception when calculating start offset",k)}try{b=CSS.percent(100*(1-function(k){if(!k.animationRange)return 0;const I=k.animationRange.end==="normal"?Wo(k.timeline):k.animationRange.end;return 1-zo(k.timeline,I)}(h)))}catch(k){b=CSS.percent(100),h.animationRange.end="normal",console.warn("Exception when calculating end offset",k)}h.rangeDuration=b.value-y.value;const C=An(h);h.startTime=Se(h,C>=0?y:b),h.holdTime=null,h.rangeDuration!==d&&jo(h)}function ir(h){throw new Error("Unsupported timeline class")}function Go(h){return h instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(0)}:h instanceof qe?CSS.percent(0):void ir()}function Wo(h){return h instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(100)}:h instanceof qe?CSS.percent(100):void ir()}function Pl(h,d){if(!d)return{start:"normal",end:"normal"};const y={start:Go(h),end:Wo(h)};if(h instanceof ViewTimeline){const b=Ee(d),C=[],k=[];if(b.forEach(I=>{if(er.includes(I))C.push(I);else try{k.push(CSSNumericValue.parse(I))}catch{throw TypeError(`Could not parse range "${d}"`)}}),C.length>2||k.length>2||k.length==1)throw TypeError("Invalid time range or unsupported time range format.");return C.length&&(y.start.rangeName=C[0],y.end.rangeName=C.length>1?C[1]:C[0]),k.length>1&&(y.start.offset=k[0],y.end.offset=k[1]),y}if(h instanceof qe){const b=d.split(" ");if(b.length!=2)throw TypeError("Invalid time range or unsupported time range format.");return y.start=CSSNumericValue.parse(b[0]),y.end=CSSNumericValue.parse(b[1]),y}ir()}function rr(h,d,y){if(!d||d==="normal")return"normal";if(h instanceof ViewTimeline){let b="cover",C=y==="start"?CSS.percent(0):CSS.percent(100);if(d instanceof Object)d.rangeName!==void 0&&(b=d.rangeName),d.offset!==void 0&&(C=d.offset);else{const k=Ee(d);k.length===1?er.includes(k[0])?b=k[0]:C=ve(CSSNumericValue.parse(k[0]),{}):k.length===2&&(b=k[0],C=ve(CSSNumericValue.parse(k[1]),{}))}if(!er.includes(b))throw TypeError("Invalid range name");return{rangeName:b,offset:C}}if(h instanceof qe)return CSSNumericValue.parse(d);ir()}class sr{constructor(d,y,b={}){const C=y instanceof qe,k=d instanceof No?d:new No(d,C?void 0:y);Jo.set(k,this),Y.set(this,{animation:k,timeline:C?y:void 0,playState:C?"idle":null,readyPromise:null,finishedPromise:null,startTime:null,holdTime:null,rangeDuration:null,previousCurrentTime:null,autoAlignStartTime:!1,pendingPlaybackRate:null,pendingTask:null,specifiedTiming:null,normalizedTiming:null,effect:null,animationRange:C?Pl(y,b["animation-range"]):null,proxy:this})}get effect(){const d=Y.get(this);return d.timeline?(d.effect||(d.effect=function(y){const b=y.animation.effect,C=b.updateTiming,k={apply:function(F){b.getTiming();const X=F.apply(b);if(y.timeline){const Z=y.duration??100;X.localTime=dn(y,X.localTime),X.endTime=dn(y,X.endTime),X.activeDuration=dn(y,X.activeDuration);const K=Jt(y),me=X.iterations?(K-X.delay-X.endDelay)/X.iterations:0;X.duration=K?CSS.percent(Z*me/K):CSS.percent(0),y.timeline.currentTime===void 0&&(X.localTime=null)}return X}},I={apply:function(F,X){if(y.specifiedTiming)return y.specifiedTiming;y.specifiedTiming=F.apply(b);let Z,K=Object.assign({},y.specifiedTiming);if(K.duration===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");return(K.duration===null||K.duration==="auto"||y.autoDurationEffect)&&y.timeline&&(y.autoDurationEffect=!0,K.delay=0,K.endDelay=0,Z=K.iterations?1e5:0,K.duration=K.iterations?(Z-K.delay-K.endDelay)/K.iterations:0,K.duration<0&&(K.duration=0,K.endDelay=Z-K.delay),C.apply(b,[K])),y.normalizedTiming=K,y.specifiedTiming}},D={apply:function(F,X,Z){if(Z&&Z.length){if(y.timeline&&Z[0]){const K=Z[0],me=K.duration;if(me===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");if(K.iterations===1/0)throw TypeError("Effect iterations cannot be Infinity when used with Scroll Timelines");me!==void 0&&me!=="auto"&&(y.autoDurationEffect=null)}y.specifiedTiming&&F.apply(b,[y.specifiedTiming]),F.apply(b,Z),jo(y)}}},N=new Proxy(b,{get:function(F,X){const Z=F[X];return typeof Z=="function"?Z.bind(b):Z},set:function(F,X,Z){return F[X]=Z,!0}});return N.getComputedTiming=new Proxy(b.getComputedTiming,k),N.getTiming=new Proxy(b.getTiming,I),N.updateTiming=new Proxy(b.updateTiming,D),N}(d)),d.effect):d.animation.effect}set effect(d){const y=Y.get(this);y.animation.effect=d,y.effect=null,y.autoDurationEffect=null}get timeline(){const d=Y.get(this);return d.timeline||d.animation.timeline}set timeline(d){const y=Y.get(this),b=this.timeline;if(b==d)return;const C=this.playState,k=this.currentTime;let I,D=Jt(y);I=k===null?null:D===0?0:Se(y,k)/D;const N=b instanceof qe,F=d instanceof qe,X=this.pending;if(N&&os(y.timeline,y.animation),F)return y.timeline=d,Ot(y),y.autoAlignStartTime=!0,y.startTime=null,y.holdTime=null,C!=="running"&&C!=="finished"||(y.readyPromise&&y.readyPromise.state!=="resolved"||Zn(y),y.pendingTask="play",as(y.timeline,y.animation,ps.bind(this))),C==="paused"&&I!==null&&(y.holdTime=I*D),X&&(y.readyPromise&&y.readyPromise.state!="resolved"||Zn(y),y.pendingTask=C=="paused"?"pause":"play"),y.startTime!==null&&(y.holdTime=null),void jt(y,!1,!1);if(y.animation.timeline!=d)throw TypeError("Unsupported timeline: "+d);if(os(y.timeline,y.animation),y.timeline=null,N)switch(k!==null&&(y.animation.currentTime=I*Jt(y)),C){case"paused":y.animation.pause();break;case"running":case"finished":y.animation.play()}}get startTime(){const d=Y.get(this);return d.timeline?dn(d,d.startTime):d.animation.startTime}set startTime(d){const y=Y.get(this);if(d=Se(y,d),!y.timeline)return void(y.animation.startTime=d);y.autoAlignStartTime=!1,Se(y,y.timeline.currentTime)==null&&y.startTime!=null&&(y.holdTime=null,Gt(y));const b=Se(y,this.currentTime);Ot(y),y.startTime=d,y.startTime!==null&&y.animation.playbackRate!=0?y.holdTime=null:y.holdTime=b,y.pendingTask&&(y.pendingTask=null,y.readyPromise.resolve(this)),jt(y,!0,!1),Gt(y)}get currentTime(){const d=Y.get(this);return d.timeline?d.holdTime!=null?dn(d,d.holdTime):dn(d,Vo(d)):d.animation.currentTime}set currentTime(d){const y=Y.get(this);y.timeline?(function(b,C){if(C==null&&b.currentTime!==null)throw new TypeError;C=Se(b,C),b.autoAlignStartTime=!1,b.holdTime!==null||b.startTime===null||b.timeline.phase==="inactive"||b.animation.playbackRate===0?b.holdTime=C:b.startTime=Se(b,b.timeline.currentTime)-C/b.animation.playbackRate,b.timeline.phase==="inactive"&&(b.startTime=null),b.previousCurrentTime=null}(y,d),y.pendingTask=="pause"&&(y.holdTime=Se(y,d),Ot(y),y.startTime=null,y.pendingTask=null,y.readyPromise.resolve(this)),jt(y,!0,!1)):y.animation.currentTime=d}get playbackRate(){return Y.get(this).animation.playbackRate}set playbackRate(d){const y=Y.get(this);if(!y.timeline)return void(y.animation.playbackRate=d);y.pendingPlaybackRate=null;const b=this.currentTime;y.animation.playbackRate=d,b!==null&&(this.currentTime=b)}get playState(){const d=Y.get(this);if(!d.timeline)return d.animation.playState;const y=Se(d,this.currentTime);return y===null&&d.startTime===null&&d.pendingTask==null?"idle":d.pendingTask=="pause"||d.startTime===null&&d.pendingTask!="play"?"paused":y!=null&&(d.animation.playbackRate>0&&y>=Jt(d)||d.animation.playbackRate<0&&y<=0)?"finished":"running"}get rangeStart(){var d;return((d=Y.get(this).animationRange)==null?void 0:d.start)??"normal"}set rangeStart(d){const y=Y.get(this);if(!y.timeline)return y.animation.rangeStart=d;y.timeline instanceof qe&&(y.animationRange.start=rr(y.timeline,d,"start"),nr(y),Gt(y))}get rangeEnd(){var d;return((d=Y.get(this).animationRange)==null?void 0:d.end)??"normal"}set rangeEnd(d){const y=Y.get(this);if(!y.timeline)return y.animation.rangeEnd=d;y.timeline instanceof qe&&(y.animationRange.end=rr(y.timeline,d,"end"),nr(y),Gt(y))}get replaceState(){return Y.get(this).animation.pending}get pending(){const d=Y.get(this);return d.timeline?!!d.readyPromise&&d.readyPromise.state=="pending":d.animation.pending}finish(){const d=Y.get(this);if(!d.timeline)return void d.animation.finish();const y=An(d),b=Jt(d);if(y==0)throw new DOMException("Cannot finish Animation with a playbackRate of 0.","InvalidStateError");if(y>0&&b==1/0)throw new DOMException("Cannot finish Animation with an infinite target effect end.","InvalidStateError");Ot(d);const C=y<0?0:b;this.currentTime=dn(d,C);const k=Se(d,d.timeline.currentTime);d.startTime===null&&k!==null&&(d.startTime=k-C/d.animation.playbackRate),d.pendingTask=="pause"&&d.startTime!==null&&(d.holdTime=null,d.pendingTask=null,d.readyPromise.resolve(this)),d.pendingTask=="play"&&d.startTime!==null&&(d.pendingTask=null,d.readyPromise.resolve(this)),jt(d,!0,!0)}play(){const d=Y.get(this);d.timeline?ds(d):d.animation.play()}pause(){const d=Y.get(this);d.timeline?this.playState!="paused"&&(d.animation.currentTime===null&&(d.autoAlignStartTime=!0),d.pendingTask=="play"?d.pendingTask=null:d.readyPromise=null,d.readyPromise||Zn(d),d.pendingTask="pause",as(d.timeline,d.animation,ps.bind(d.proxy))):d.animation.pause()}reverse(){const d=Y.get(this),y=An(d),b=Se(d,this.currentTime),C=Jt(d)==1/0,k=y!=0&&(y<0||b>0||!C);if(!d.timeline||!k)return k&&(d.pendingPlaybackRate=-An(d)),void d.animation.reverse();if(d.timeline.phase=="inactive")throw new DOMException("Cannot reverse an animation with no active timeline","InvalidStateError");this.updatePlaybackRate(-y),ds(d)}updatePlaybackRate(d){const y=Y.get(this);if(y.pendingPlaybackRate=d,!y.timeline)return void y.animation.updatePlaybackRate(d);const b=this.playState;if(!y.readyPromise||y.readyPromise.state!="pending")switch(b){case"idle":case"paused":Ot(y);break;case"finished":const C=Se(y,y.timeline.currentTime),k=C!==null?(C-y.startTime)*y.animation.playbackRate:null;y.startTime=d==0?C:C!=null&&k!=null?(C-k)/d:null,Ot(y),jt(y,!1,!1),Gt(y);break;default:ds(y)}}persist(){Y.get(this).animation.persist()}get id(){return Y.get(this).animation.id}set id(d){Y.get(this).animation.id=d}cancel(){const d=Y.get(this);d.timeline?(this.playState!="idle"&&(function(y){y.pendingTask&&(y.pendingTask=null,Ot(y),y.readyPromise.reject(Uo()),Zn(y),y.readyPromise.resolve(y.proxy))}(d),d.finishedPromise&&d.finishedPromise.state=="pending"&&d.finishedPromise.reject(Uo()),d.finishedPromise=new Rn,d.animation.cancel()),d.startTime=null,d.holdTime=null,os(d.timeline,d.animation)):d.animation.cancel()}get onfinish(){return Y.get(this).animation.onfinish}set onfinish(d){Y.get(this).animation.onfinish=d}get oncancel(){return Y.get(this).animation.oncancel}set oncancel(d){Y.get(this).animation.oncancel=d}get onremove(){return Y.get(this).animation.onremove}set onremove(d){Y.get(this).animation.onremove=d}get finished(){const d=Y.get(this);return d.timeline?(d.finishedPromise||(d.finishedPromise=new Rn),d.finishedPromise.promise):d.animation.finished}get ready(){const d=Y.get(this);return d.timeline?(d.readyPromise||(d.readyPromise=new Rn,d.readyPromise.resolve(this)),d.readyPromise.promise):d.animation.ready}addEventListener(d,y,b){Y.get(this).animation.addEventListener(d,y,b)}removeEventListener(d,y,b){Y.get(this).animation.removeEventListener(d,y,b)}dispatchEvent(d){Y.get(this).animation.dispatchEvent(d)}}function kl(h,d){const y=d.timeline;y instanceof qe&&delete d.timeline;const b=El.apply(this,[h,d]),C=new sr(b,y);return y instanceof qe&&(b.pause(),Y.get(C).animationRange={start:rr(y,d.rangeStart,"start"),end:rr(y,d.rangeEnd,"end")},C.play()),C}function Ho(h){for(let d=0;d<h.length;++d){let y=Jo.get(h[d]);y&&(h[d]=y)}return h}function Rl(h){return Ho(Cl.apply(this,[h]))}function Al(h){return Ho(Ml.apply(this,[h]))}const Re={IDENTIFIER:/[\w\\\@_-]+/g,WHITE_SPACE:/\s*/g,TIME:/^[0-9]+(s|ms)/,SCROLL_TIMELINE:/scroll-timeline\s*:([^;}]+)/,SCROLL_TIMELINE_NAME:/scroll-timeline-name\s*:([^;}]+)/,SCROLL_TIMELINE_AXIS:/scroll-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE:/view-timeline\s*:([^;}]+)/,VIEW_TIMELINE_NAME:/view-timeline-name\s*:([^;}]+)/,VIEW_TIMELINE_AXIS:/view-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE_INSET:/view-timeline-inset\s*:([^;}]+)/,ANIMATION_TIMELINE:/animation-timeline\s*:([^;}]+)/,ANIMATION_TIME_RANGE:/animation-range\s*:([^;}]+)/,ANIMATION_NAME:/animation-name\s*:([^;}]+)/,ANIMATION:/animation\s*:([^;}]+)/,ANONYMOUS_SCROLL_TIMELINE:/scroll\(([^)]*)\)/,ANONYMOUS_VIEW_TIMELINE:/view\(([^)]*)\)/},On=["block","inline","x","y"],Ol=["nearest","root","self"],$t=new class{constructor(){this.cssRulesWithTimelineName=[],this.nextAnonymousTimelineNameIndex=0,this.anonymousScrollTimelineOptions=new Map,this.anonymousViewTimelineOptions=new Map,this.sourceSelectorToScrollTimeline=[],this.subjectSelectorToViewTimeline=[],this.keyframeNamesSelectors=new Map}transpileStyleSheet(h,d,y){const b={sheetSrc:h,index:0,name:y};for(;b.index<b.sheetSrc.length&&(this.eatWhitespace(b),!(b.index>=b.sheetSrc.length));){if(this.lookAhead("/*",b)){for(;this.lookAhead("/*",b);)this.eatComment(b),this.eatWhitespace(b);continue}const C=this.parseQualifiedRule(b);C&&(d?this.parseKeyframesAndSaveNameMapping(C,b):this.handleScrollTimelineProps(C,b))}return b.sheetSrc}getAnimationTimelineOptions(h,d){for(let y=this.cssRulesWithTimelineName.length-1;y>=0;y--){const b=this.cssRulesWithTimelineName[y];try{if(d.matches(b.selector)&&(!b["animation-name"]||b["animation-name"]==h))return{"animation-timeline":b["animation-timeline"],"animation-range":b["animation-range"]}}catch{}}return null}getAnonymousScrollTimelineOptions(h,d){const y=this.anonymousScrollTimelineOptions.get(h);return y?{anonymousSource:y.source,anonymousTarget:d,source:Oo(y.source??"nearest",d),axis:y.axis?y.axis:"block"}:null}getScrollTimelineOptions(h,d){const y=this.getAnonymousScrollTimelineOptions(h,d);if(y)return y;for(let b=this.sourceSelectorToScrollTimeline.length-1;b>=0;b--){const C=this.sourceSelectorToScrollTimeline[b];if(C.name==h){const k=this.findPreviousSiblingOrAncestorMatchingSelector(d,C.selector);if(k)return{source:k,...C.axis?{axis:C.axis}:{}}}}return null}findPreviousSiblingOrAncestorMatchingSelector(h,d){let y=h;for(;y;){if(y.matches(d))return y;y=y.previousElementSibling||y.parentElement}return null}getAnonymousViewTimelineOptions(h,d){const y=this.anonymousViewTimelineOptions.get(h);return y?{subject:d,axis:y.axis?y.axis:"block",inset:y.inset?y.inset:"auto"}:null}getViewTimelineOptions(h,d){const y=this.getAnonymousViewTimelineOptions(h,d);if(y)return y;for(let b=this.subjectSelectorToViewTimeline.length-1;b>=0;b--){const C=this.subjectSelectorToViewTimeline[b];if(C.name==h){const k=this.findPreviousSiblingOrAncestorMatchingSelector(d,C.selector);if(k)return{subject:k,axis:C.axis,inset:C.inset}}}return null}handleScrollTimelineProps(h,d){if(h.selector.includes("@keyframes"))return;const y=h.block.contents.includes("animation-name:"),b=h.block.contents.includes("animation-timeline:"),C=h.block.contents.includes("animation:");if(this.saveSourceSelectorToScrollTimeline(h),this.saveSubjectSelectorToViewTimeline(h),!b&&!y&&!C)return;let k=[],I=[],D=!1;b&&(k=this.extractScrollTimelineNames(h.block.contents)),y&&(I=this.extractMatches(h.block.contents,Re.ANIMATION_NAME)),b&&y||(C&&this.extractMatches(h.block.contents,Re.ANIMATION).forEach(N=>{const F=this.extractAnimationName(N);F&&b&&I.push(F),b&&(this.hasDuration(N)||(this.hasAutoDuration(N)&&(h.block.contents=h.block.contents.replace("auto"," ")),h.block.contents=h.block.contents.replace(N," 1s "+N),D=!0))}),D&&this.replacePart(h.block.startIndex,h.block.endIndex,h.block.contents,d)),this.saveRelationInList(h,k,I)}saveSourceSelectorToScrollTimeline(h){const d=h.block.contents.includes("scroll-timeline:"),y=h.block.contents.includes("scroll-timeline-name:"),b=h.block.contents.includes("scroll-timeline-axis:");if(!d&&!y)return;let C=[];if(d){const I=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE);for(const D of I){const N=this.split(D);let F={selector:h.selector,name:""};N.length==1?F.name=N[0]:N.length==2&&(On.includes(N[0])?(F.axis=N[0],F.name=N[1]):(F.axis=N[1],F.name=N[0])),C.push(F)}}if(y){const I=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE_NAME);for(let D=0;D<I.length;D++)if(D<C.length)C[D].name=I[D];else{let N={selector:h.selector,name:I[D]};C.push(N)}}let k=[];if(b){const I=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE_AXIS);if(k=I.filter(D=>On.includes(D)),k.length!=I.length)throw new Error("Invalid axis")}for(let I=0;I<C.length;I++)k.length&&(C[I].axis=k[I%C.length]);this.sourceSelectorToScrollTimeline.push(...C)}saveSubjectSelectorToViewTimeline(h){const d=h.block.contents.includes("view-timeline:"),y=h.block.contents.includes("view-timeline-name:"),b=h.block.contents.includes("view-timeline-axis:"),C=h.block.contents.includes("view-timeline-inset:");if(!d&&!y)return;let k=[];if(d){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE);for(let F of N){const X=this.split(F);let Z={selector:h.selector,name:"",inset:null};X.length==1?Z.name=X[0]:X.length==2&&(On.includes(X[0])?(Z.axis=X[0],Z.name=X[1]):(Z.axis=X[1],Z.name=X[0])),k.push(Z)}}if(y){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_NAME);for(let F=0;F<N.length;F++)if(F<k.length)k[F].name=N[F];else{let X={selector:h.selector,name:N[F],inset:null};k.push(X)}}let I=[],D=[];if(C&&(I=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_INSET)),b){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_AXIS);if(D=N.filter(F=>On.includes(F)),D.length!=N.length)throw new Error("Invalid axis")}for(let N=0;N<k.length;N++)I.length&&(k[N].inset=I[N%k.length]),D.length&&(k[N].axis=D[N%k.length]);this.subjectSelectorToViewTimeline.push(...k)}hasDuration(h){return h.split(" ").filter(d=>{return y=d,Re.TIME.exec(y);var y}).length>=1}hasAutoDuration(h){return h.split(" ").filter(d=>d==="auto").length>=1}saveRelationInList(h,d,y){let b=[];h.block.contents.includes("animation-range:")&&(b=this.extractMatches(h.block.contents,Re.ANIMATION_TIME_RANGE));const C=Math.max(d.length,y.length,b.length);for(let k=0;k<C;k++)this.cssRulesWithTimelineName.push({selector:h.selector,"animation-timeline":d[k%d.length],...y.length?{"animation-name":y[k%y.length]}:{},...b.length?{"animation-range":b[k%b.length]}:{}})}extractScrollTimelineNames(h){const d=Re.ANIMATION_TIMELINE.exec(h)[1].trim(),y=[];return d.split(",").map(b=>b.trim()).forEach(b=>{if(function(C){return(C.startsWith("scroll")||C.startsWith("view"))&&C.includes("(")}(b)){const C=this.saveAnonymousTimelineName(b);y.push(C)}else y.push(b)}),y}saveAnonymousTimelineName(h){const d=":t"+this.nextAnonymousTimelineNameIndex++;return h.startsWith("scroll(")?this.anonymousScrollTimelineOptions.set(d,this.parseAnonymousScrollTimeline(h)):this.anonymousViewTimelineOptions.set(d,this.parseAnonymousViewTimeline(h)),d}parseAnonymousScrollTimeline(h){const d=Re.ANONYMOUS_SCROLL_TIMELINE.exec(h);if(!d)return null;const y=d[1],b={};return y.split(" ").forEach(C=>{On.includes(C)?b.axis=C:Ol.includes(C)&&(b.source=C)}),b}parseAnonymousViewTimeline(h){const d=Re.ANONYMOUS_VIEW_TIMELINE.exec(h);if(!d)return null;const y=d[1],b={};return y.split(" ").forEach(C=>{On.includes(C)?b.axis=C:b.inset=b.inset?`${b.inset} ${C}`:C}),b}extractAnimationName(h){return this.findMatchingEntryInContainer(h,this.keyframeNamesSelectors)}findMatchingEntryInContainer(h,d){const y=h.split(" ").filter(b=>d.has(b));return y?y[0]:null}parseIdentifier(h){Re.IDENTIFIER.lastIndex=h.index;const d=Re.IDENTIFIER.exec(h.sheetSrc);if(!d)throw this.parseError(h,"Expected an identifier");return h.index+=d[0].length,d[0]}parseKeyframesAndSaveNameMapping(h,d){if(h.selector.startsWith("@keyframes")){const y=this.replaceKeyframesAndGetMapping(h,d);h.selector.split(" ").forEach((b,C)=>{C>0&&this.keyframeNamesSelectors.set(b,y)})}}replaceKeyframesAndGetMapping(h,d){function y(N){return er.some(F=>N.startsWith(F))}const b=h.block.contents,C=function(N){let F=0,X=-1,Z=-1;const K=[];for(let me=0;me<N.length;me++)N[me]=="{"?F++:N[me]=="}"&&F--,F==1&&N[me]!="{"&&N[me]!="}"&&X==-1&&(X=me),F==2&&N[me]=="{"&&(Z=me,K.push({start:X,end:Z}),X=Z=-1);return K}(b);if(C.length==0)return new Map;const k=new Map;let I=!1;const D=[];D.push(b.substring(0,C[0].start));for(let N=0;N<C.length;N++){const F=b.substring(C[N].start,C[N].end);let X=[];F.split(",").forEach(Z=>{const K=Z.split(" ").map(_e=>_e.trim()).filter(_e=>_e!="").join(" "),me=k.size;k.set(me,K),X.push(`${me}%`),y(K)&&(I=!0)}),D.push(X.join(",")),N==C.length-1?D.push(b.substring(C[N].end)):D.push(b.substring(C[N].end,C[N+1].start))}return I?(h.block.contents=D.join(""),this.replacePart(h.block.startIndex,h.block.endIndex,h.block.contents,d),k):new Map}parseQualifiedRule(h){const d=h.index,y=this.parseSelector(h).trim();if(y)return{selector:y,block:this.eatBlock(h),startIndex:d,endIndex:h.index}}removeEnclosingDoubleQuotes(h){let d=h[0]=='"'?1:0,y=h[h.length-1]=='"'?h.length-1:h.length;return h.substring(d,y)}assertString(h,d){if(h.sheetSrc.substr(h.index,d.length)!=d)throw this.parseError(h,`Did not find expected sequence ${d}`);h.index+=d.length}replacePart(h,d,y,b){if(b.sheetSrc=b.sheetSrc.slice(0,h)+y+b.sheetSrc.slice(d),b.index>=d){const C=b.index-d;b.index=h+y.length+C}}eatComment(h){this.assertString(h,"/*"),this.eatUntil("*/",h,!0),this.assertString(h,"*/")}eatBlock(h){const d=h.index;this.assertString(h,"{");let y=1;for(;y!=0;)this.lookAhead("/*",h)?this.eatComment(h):(h.sheetSrc[h.index]==="{"?y++:h.sheetSrc[h.index]==="}"&&y--,this.advance(h));const b=h.index;return{startIndex:d,endIndex:b,contents:h.sheetSrc.slice(d,b)}}advance(h){if(h.index++,h.index>h.sheetSrc.length)throw this.parseError(h,"Advanced beyond the end")}parseError(h,d){return Error(`(${h.name?h.name:"<anonymous file>"}): ${d}`)}eatUntil(h,d,y=!1){const b=d.index;for(;!this.lookAhead(h,d);)this.advance(d);return y&&(d.sheetSrc=d.sheetSrc.slice(0,b)+" ".repeat(d.index-b)+d.sheetSrc.slice(d.index)),d.sheetSrc.slice(b,d.index)}parseSelector(h){let d=h.index;if(this.eatUntil("{",h),d===h.index)throw Error("Empty selector");return h.sheetSrc.slice(d,h.index)}eatWhitespace(h){Re.WHITE_SPACE.lastIndex=h.index;const d=Re.WHITE_SPACE.exec(h.sheetSrc);d&&(h.index+=d[0].length)}lookAhead(h,d){return d.sheetSrc.substr(d.index,h.length)==h}peek(h){return h.sheetSrc[h.index]}extractMatches(h,d,y=","){return d.exec(h)[1].trim().split(y).map(b=>b.trim())}split(h){return h.split(" ").map(d=>d.trim()).filter(d=>d!="")}};function Il(h,d,y,b,C,k){const I=rs(d),D=ss(d,y);return Bo(us(h,I,D,b,C),k,us("cover",I,D,b,C),y)}function zl(h,d,y){const b=$t.getAnimationTimelineOptions(d,y);if(!b)return null;const C=b["animation-timeline"];if(!C)return null;let k=$t.getScrollTimelineOptions(C,y)||$t.getViewTimelineOptions(C,y);return k?(k.subject&&function(I,D){const N=ls(D.subject),F=D.axis||D.axis;function X(K,me){let _e=null;for(const[$e,Mt]of K)if($e==100*me.offset){if(Mt=="from")_e=0;else if(Mt=="to")_e=100;else{const dt=Mt.split(" ");_e=dt.length==1?parseFloat(dt[0]):100*Il(dt[0],N,D.subject,F,D.inset,CSS.percent(parseFloat(dt[1])))}break}return _e}const Z=$t.keyframeNamesSelectors.get(I.animationName);if(Z&&Z.size){const K=[];I.effect.getKeyframes().forEach(_e=>{const $e=X(Z,_e);$e!==null&&$e>=0&&$e<=100&&(_e.offset=$e/100,K.push(_e))});const me=K.sort((_e,$e)=>_e.offset<$e.offset?-1:_e.affset>$e.offset?1:0);I.effect.setKeyframes(me)}}(h,k),{timeline:k.source?new qe(k):new kn(k),animOptions:b}):null}function Bl(){if(CSS.supports("animation-timeline: --works"))return!0;(function(){function d(b){if(b.innerHTML.trim().length===0||"aphrodite"in b.dataset)return;let C=$t.transpileStyleSheet(b.innerHTML,!0);C=$t.transpileStyleSheet(C,!1),b.innerHTML=C}function y(b){b.type!="text/css"&&b.rel!="stylesheet"||!b.href||new URL(b.href,document.baseURI).origin==location.origin&&fetch(b.getAttribute("href")).then(async C=>{const k=await C.text();let I=$t.transpileStyleSheet(k,!0);if(I=$t.transpileStyleSheet(k,!1),I!=k){const D=new Blob([I],{type:"text/css"}),N=URL.createObjectURL(D);b.setAttribute("href",N)}})}new MutationObserver(b=>{for(const C of b)for(const k of C.addedNodes)k instanceof HTMLStyleElement&&d(k),k instanceof HTMLLinkElement&&y(k)}).observe(document.documentElement,{childList:!0,subtree:!0}),document.querySelectorAll("style").forEach(b=>d(b)),document.querySelectorAll("link").forEach(b=>y(b))})();const h=CSS.supports;CSS.supports=d=>(d=d.replaceAll(/(animation-timeline|scroll-timeline(-(name|axis))?|view-timeline(-(name|axis|inset))?|timeline-scope)\s*:/g,"--supported-property:"),h(d)),window.addEventListener("animationstart",d=>{d.target.getAnimations().filter(y=>y.animationName===d.animationName).forEach(y=>{const b=zl(y,y.animationName,d.target);if(b)if(!b.timeline||y instanceof sr)y.timeline=b.timeline;else{const C=new sr(y,b.timeline,b.animOptions);y.pause(),C.play()}})})}(function(){if(!Bl()){if(!Reflect.defineProperty(window,"ScrollTimeline",{value:qe}))throw Error("Error installing ScrollTimeline polyfill: could not attach ScrollTimeline to window");if(!Reflect.defineProperty(window,"ViewTimeline",{value:kn}))throw Error("Error installing ViewTimeline polyfill: could not attach ViewTimeline to window");if(!Reflect.defineProperty(Element.prototype,"animate",{value:kl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's animate to DOM Element");if(!Reflect.defineProperty(window,"Animation",{value:sr}))throw Error("Error installing Animation constructor.");if(!Reflect.defineProperty(Element.prototype,"getAnimations",{value:Rl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to DOM Element");if(!Reflect.defineProperty(document,"getAnimations",{value:Al}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to document")}})()})();class gd{constructor(e,t){if(this._retries=0,!Number.isInteger(e)||e<0)throw new Error("Base must be a positive integer or zero");if(t!==void 0&&(!Number.isInteger(t)||t<0))throw new Error("ExpMax must be a undefined, a positive integer or zero");this.base=e,this.expMax=t,this.i=0}get retries(){return this._retries}get current(){return this.base*Math.pow(2,this.i)}next(){return this._retries++,this.i=this.expMax===void 0?this.i+1:Math.min(this.i+1,this.expMax),this.current}reset(){this._retries=0,this.i=0}}var ce;(function(r){r.open="open",r.close="close",r.error="error",r.message="message",r.retry="retry",r.reconnect="reconnect"})(ce||(ce={}));class Wc{constructor(e,t,n){var i,s,a,o,c,l,u,p,m,f,x,w,g,v,_;this._closedByUser=!1,this.handleOpenEvent=S=>this.handleEvent(ce.open,S),this.handleErrorEvent=S=>this.handleEvent(ce.error,S),this.handleCloseEvent=S=>this.handleEvent(ce.close,S),this.handleMessageEvent=S=>this.handleEvent(ce.message,S),this._url=e,this._protocols=t,this._options={buffer:n?.buffer,retry:{maxRetries:(i=n?.retry)===null||i===void 0?void 0:i.maxRetries,instantReconnect:(s=n?.retry)===null||s===void 0?void 0:s.instantReconnect,backoff:(a=n?.retry)===null||a===void 0?void 0:a.backoff},listeners:{open:[...(c=(o=n?.listeners)===null||o===void 0?void 0:o.open)!==null&&c!==void 0?c:[]],close:[...(u=(l=n?.listeners)===null||l===void 0?void 0:l.close)!==null&&u!==void 0?u:[]],error:[...(m=(p=n?.listeners)===null||p===void 0?void 0:p.error)!==null&&m!==void 0?m:[]],message:[...(x=(f=n?.listeners)===null||f===void 0?void 0:f.message)!==null&&x!==void 0?x:[]],retry:[...(g=(w=n?.listeners)===null||w===void 0?void 0:w.retry)!==null&&g!==void 0?g:[]],reconnect:[...(_=(v=n?.listeners)===null||v===void 0?void 0:v.reconnect)!==null&&_!==void 0?_:[]]}},this._underlyingWebsocket=this.tryConnect()}get url(){return this._url}get protocols(){return this._protocols}get buffer(){return this._options.buffer}get maxRetries(){return this._options.retry.maxRetries}get instantReconnect(){return this._options.retry.instantReconnect}get backoff(){return this._options.retry.backoff}get closedByUser(){return this._closedByUser}get lastConnection(){return this._lastConnection}get underlyingWebsocket(){return this._underlyingWebsocket}get readyState(){return this._underlyingWebsocket.readyState}get bufferedAmount(){return this._underlyingWebsocket.bufferedAmount}get extensions(){return this._underlyingWebsocket.extensions}get binaryType(){return this._underlyingWebsocket.binaryType}set binaryType(e){this._underlyingWebsocket.binaryType=e}send(e){this.closedByUser||(this._underlyingWebsocket.readyState===this._underlyingWebsocket.OPEN?this._underlyingWebsocket.send(e):this.buffer!==void 0&&this.buffer.add(e))}close(e,t){this.cancelScheduledConnectionRetry(),this._closedByUser=!0,this._underlyingWebsocket.close(e,t)}addEventListener(e,t,n){this._options.listeners[e].push({listener:t,options:n})}removeEventListener(e,t,n){const i=s=>s.listener!==t||s.options!==n;this._options.listeners[e]=this._options.listeners[e].filter(i)}tryConnect(){return this._underlyingWebsocket=new WebSocket(this.url,this.protocols),this._underlyingWebsocket.addEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.addEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.addEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.addEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket}clearWebsocket(){this._underlyingWebsocket.removeEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.removeEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.removeEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.removeEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket.close()}dispatchEvent(e,t){const n=this._options.listeners[e],i=[];n.forEach(({listener:s,options:a})=>{s(this,t),(a===void 0||a.once===void 0||!a.once)&&i.push({listener:s,options:a})}),this._options.listeners[e]=i}handleEvent(e,t){switch(e){case ce.close:this.dispatchEvent(e,t),this.scheduleConnectionRetryIfNeeded();break;case ce.open:if(this.backoff!==void 0&&this._lastConnection!==void 0){const n={retries:this.backoff.retries,lastConnection:new Date(this._lastConnection)},i=new CustomEvent(ce.reconnect,{detail:n});this.dispatchEvent(ce.reconnect,i),this.backoff.reset()}this._lastConnection=new Date,this.dispatchEvent(e,t),this.sendBufferedData();break;case ce.retry:this.dispatchEvent(e,t),this.clearWebsocket(),this.tryConnect();break;default:this.dispatchEvent(e,t);break}}sendBufferedData(){if(this.buffer!==void 0)for(let e=this.buffer.read();e!==void 0;e=this.buffer.read())this.send(e)}scheduleConnectionRetryIfNeeded(){if(this.closedByUser||this.backoff===void 0)return;const e=n=>{const i=new CustomEvent(ce.retry,{detail:n});this.handleEvent(ce.retry,i)},t={backoff:this._options.retry.instantReconnect===!0?0:this.backoff.next(),retries:this._options.retry.instantReconnect===!0?0:this.backoff.retries,lastConnection:this._lastConnection};(this._options.retry.maxRetries===void 0||t.retries<=this._options.retry.maxRetries)&&(this.retryTimeout=globalThis.setTimeout(()=>e(t),t.backoff))}cancelScheduledConnectionRetry(){globalThis.clearTimeout(this.retryTimeout)}}class vd{constructor(e){this._url=e}get url(){return this._url}withProtocols(e){return this._protocols=e,this}get protocols(){return this._protocols}withMaxRetries(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{maxRetries:e})}),this}get maxRetries(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.maxRetries}withInstantReconnect(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{instantReconnect:e})}),this}get instantReconnect(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.instantReconnect}withBackoff(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{backoff:e})}),this}get backoff(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.backoff}withBuffer(e){return this._options=Object.assign(Object.assign({},this._options),{buffer:e}),this}get buffer(){var e;return(e=this._options)===null||e===void 0?void 0:e.buffer}onOpen(e,t){return this.addListener(ce.open,e,t),this}onClose(e,t){return this.addListener(ce.close,e,t),this}onError(e,t){return this.addListener(ce.error,e,t),this}onMessage(e,t){return this.addListener(ce.message,e,t),this}onRetry(e,t){return this.addListener(ce.retry,e,t),this}onReconnect(e,t){return this.addListener(ce.reconnect,e,t),this}build(){return new Wc(this._url,this._protocols,this._options)}addListener(e,t,n){var i,s,a,o,c,l,u,p,m,f,x,w,g,v,_,S,M,T,E,P,z;return this._options=Object.assign(Object.assign({},this._options),{listeners:{open:(a=(s=(i=this._options)===null||i===void 0?void 0:i.listeners)===null||s===void 0?void 0:s.open)!==null&&a!==void 0?a:[],close:(l=(c=(o=this._options)===null||o===void 0?void 0:o.listeners)===null||c===void 0?void 0:c.close)!==null&&l!==void 0?l:[],error:(m=(p=(u=this._options)===null||u===void 0?void 0:u.listeners)===null||p===void 0?void 0:p.error)!==null&&m!==void 0?m:[],message:(w=(x=(f=this._options)===null||f===void 0?void 0:f.listeners)===null||x===void 0?void 0:x.message)!==null&&w!==void 0?w:[],retry:(_=(v=(g=this._options)===null||g===void 0?void 0:g.listeners)===null||v===void 0?void 0:v.retry)!==null&&_!==void 0?_:[],reconnect:(T=(M=(S=this._options)===null||S===void 0?void 0:S.listeners)===null||M===void 0?void 0:M.reconnect)!==null&&T!==void 0?T:[],[e]:[...(z=(P=(E=this._options)===null||E===void 0?void 0:E.listeners)===null||P===void 0?void 0:P[e])!==null&&z!==void 0?z:[],{listener:t,options:n}]}}),this}}const Sd=Object.freeze(Object.defineProperty({__proto__:null,ExponentialBackoff:gd,Websocket:Wc,WebsocketBuilder:vd,get WebsocketEvent(){return ce}},Symbol.toStringTag,{value:"Module"})),$s=0,Hc=1,qc=2,eo=2,to=1.25,Xc=1,ui=32,Rr=65535,bd=Math.pow(2,-24),no=Symbol("SKIP_GENERATION");function xd(r){return r.index?r.index.count:r.attributes.position.count}function sn(r){return xd(r)/3}function wd(r,e=ArrayBuffer){return r>65535?new Uint32Array(new e(4*r)):new Uint16Array(new e(2*r))}function _d(r,e){if(!r.index){const t=r.attributes.position.count,n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=wd(t,n);r.setIndex(new ot(i,1));for(let s=0;s<t;s++)i[s]=s}}function Yc(r,e){const t=sn(r),n=e||r.drawRange,i=n.start/3,s=(n.start+n.count)/3,a=Math.max(0,i),o=Math.min(t,s)-a;return[{offset:Math.floor(a),count:Math.floor(o)}]}function Zc(r,e){if(!r.groups||!r.groups.length)return Yc(r,e);const t=[],n=new Set,i=e||r.drawRange,s=i.start/3,a=(i.start+i.count)/3;for(const c of r.groups){const l=c.start/3,u=(c.start+c.count)/3;n.add(Math.max(s,l)),n.add(Math.min(a,u))}const o=Array.from(n.values()).sort((c,l)=>c-l);for(let c=0;c<o.length-1;c++){const l=o[c],u=o[c+1];t.push({offset:Math.floor(l),count:Math.floor(u-l)})}return t}function Td(r,e){const t=sn(r),n=Zc(r,e).sort((a,o)=>a.offset-o.offset),i=n[n.length-1];i.count=Math.min(t-i.offset,i.count);let s=0;return n.forEach(({count:a})=>s+=a),t!==s}function io(r,e,t,n,i){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,u=-1/0,p=1/0,m=1/0,f=1/0,x=-1/0,w=-1/0,g=-1/0;for(let v=e*6,_=(e+t)*6;v<_;v+=6){const S=r[v+0],M=r[v+1],T=S-M,E=S+M;T<s&&(s=T),E>c&&(c=E),S<p&&(p=S),S>x&&(x=S);const P=r[v+2],z=r[v+3],R=P-z,A=P+z;R<a&&(a=R),A>l&&(l=A),P<m&&(m=P),P>w&&(w=P);const B=r[v+4],O=r[v+5],U=B-O,L=B+O;U<o&&(o=U),L>u&&(u=L),B<f&&(f=B),B>g&&(g=B)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=u,i[0]=p,i[1]=m,i[2]=f,i[3]=x,i[4]=w,i[5]=g}function Md(r,e=null,t=null,n=null){const i=r.attributes.position,s=r.index?r.index.array:null,a=sn(r),o=i.normalized;let c;e===null?c=new Float32Array(a*6):c=e,t=t||0,n=n||a;const l=i.array,u=i.offset||0;let p=3;i.isInterleavedBufferAttribute&&(p=i.data.stride);const m=["getX","getY","getZ"];for(let f=t;f<t+n;f++){const x=f*3,w=f*6;let g=x+0,v=x+1,_=x+2;s&&(g=s[g],v=s[v],_=s[_]),o||(g=g*p+u,v=v*p+u,_=_*p+u);for(let S=0;S<3;S++){let M,T,E;o?(M=i[m[S]](g),T=i[m[S]](v),E=i[m[S]](_)):(M=l[g+S],T=l[v+S],E=l[_+S]);let P=M;T<P&&(P=T),E<P&&(P=E);let z=M;T>z&&(z=T),E>z&&(z=E);const R=(z-P)/2,A=S*2;c[w+A+0]=P+R,c[w+A+1]=R+(Math.abs(P)+R)*bd}}return c}function be(r,e,t){return t.min.x=e[r],t.min.y=e[r+1],t.min.z=e[r+2],t.max.x=e[r+3],t.max.y=e[r+4],t.max.z=e[r+5],t}function Kc(r){let e=-1,t=-1/0;for(let n=0;n<3;n++){const i=r[n+3]-r[n];i>t&&(t=i,e=n)}return e}function Qc(r,e){e.set(r)}function $c(r,e,t){let n,i;for(let s=0;s<3;s++){const a=s+3;n=r[s],i=e[s],t[s]=n<i?n:i,n=r[a],i=e[a],t[a]=n>i?n:i}}function Ar(r,e,t){for(let n=0;n<3;n++){const i=e[r+2*n],s=e[r+2*n+1],a=i-s,o=i+s;a<t[n]&&(t[n]=a),o>t[n+3]&&(t[n+3]=o)}}function hi(r){const e=r[3]-r[0],t=r[4]-r[1],n=r[5]-r[2];return 2*(e*t+t*n+n*e)}const Yt=32,Cd=(r,e)=>r.candidate-e.candidate,on=new Array(Yt).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Or=new Float32Array(6);function Ed(r,e,t,n,i,s){let a=-1,o=0;if(s===$s)a=Kc(e),a!==-1&&(o=(e[a]+e[a+3])/2);else if(s===Hc)a=Kc(r),a!==-1&&(o=Pd(t,n,i,a));else if(s===qc){const c=hi(r);let l=to*i;const u=n*6,p=(n+i)*6;for(let m=0;m<3;m++){const f=e[m],x=(e[m+3]-f)/Yt;if(i<Yt/4){const w=[...on];w.length=i;let g=0;for(let _=u;_<p;_+=6,g++){const S=w[g];S.candidate=t[_+2*m],S.count=0;const{bounds:M,leftCacheBounds:T,rightCacheBounds:E}=S;for(let P=0;P<3;P++)E[P]=1/0,E[P+3]=-1/0,T[P]=1/0,T[P+3]=-1/0,M[P]=1/0,M[P+3]=-1/0;Ar(_,t,M)}w.sort(Cd);let v=i;for(let _=0;_<v;_++){const S=w[_];for(;_+1<v&&w[_+1].candidate===S.candidate;)w.splice(_+1,1),v--}for(let _=u;_<p;_+=6){const S=t[_+2*m];for(let M=0;M<v;M++){const T=w[M];S>=T.candidate?Ar(_,t,T.rightCacheBounds):(Ar(_,t,T.leftCacheBounds),T.count++)}}for(let _=0;_<v;_++){const S=w[_],M=S.count,T=i-S.count,E=S.leftCacheBounds,P=S.rightCacheBounds;let z=0;M!==0&&(z=hi(E)/c);let R=0;T!==0&&(R=hi(P)/c);const A=Xc+to*(z*M+R*T);A<l&&(a=m,l=A,o=S.candidate)}}else{for(let v=0;v<Yt;v++){const _=on[v];_.count=0,_.candidate=f+x+v*x;const S=_.bounds;for(let M=0;M<3;M++)S[M]=1/0,S[M+3]=-1/0}for(let v=u;v<p;v+=6){let _=~~((t[v+2*m]-f)/x);_>=Yt&&(_=Yt-1);const S=on[_];S.count++,Ar(v,t,S.bounds)}const w=on[Yt-1];Qc(w.bounds,w.rightCacheBounds);for(let v=Yt-2;v>=0;v--){const _=on[v],S=on[v+1];$c(_.bounds,S.rightCacheBounds,_.rightCacheBounds)}let g=0;for(let v=0;v<Yt-1;v++){const _=on[v],S=_.count,M=_.bounds,T=on[v+1].rightCacheBounds;S!==0&&(g===0?Qc(M,Or):$c(M,Or,Or)),g+=S;let E=0,P=0;g!==0&&(E=hi(Or)/c);const z=i-g;z!==0&&(P=hi(T)/c);const R=Xc+to*(E*g+P*z);R<l&&(a=m,l=R,o=_.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${s} used.`);return{axis:a,pos:o}}function Pd(r,e,t,n){let i=0;for(let s=e,a=e+t;s<a;s++)i+=r[s*6+n*2];return i/t}class ro{constructor(){this.boundingData=new Float32Array(6)}}function kd(r,e,t,n,i,s){let a=n,o=n+i-1;const c=s.pos,l=s.axis*2;for(;;){for(;a<=o&&t[a*6+l]<c;)a++;for(;a<=o&&t[o*6+l]>=c;)o--;if(a<o){for(let u=0;u<3;u++){let p=e[a*3+u];e[a*3+u]=e[o*3+u],e[o*3+u]=p}for(let u=0;u<6;u++){let p=t[a*6+u];t[a*6+u]=t[o*6+u],t[o*6+u]=p}a++,o--}else return a}}function Rd(r,e,t,n,i,s){let a=n,o=n+i-1;const c=s.pos,l=s.axis*2;for(;;){for(;a<=o&&t[a*6+l]<c;)a++;for(;a<=o&&t[o*6+l]>=c;)o--;if(a<o){let u=r[a];r[a]=r[o],r[o]=u;for(let p=0;p<6;p++){let m=t[a*6+p];t[a*6+p]=t[o*6+p],t[o*6+p]=m}a++,o--}else return a}}function tt(r,e){return e[r+15]===65535}function ct(r,e){return e[r+6]}function pt(r,e){return e[r+14]}function ft(r){return r+8}function mt(r,e){return e[r+6]}function el(r,e){return e[r+7]}let tl,di,Ir,nl;const Ad=Math.pow(2,32);function so(r){return"count"in r?1:1+so(r.left)+so(r.right)}function Od(r,e,t){return tl=new Float32Array(t),di=new Uint32Array(t),Ir=new Uint16Array(t),nl=new Uint8Array(t),oo(r,e)}function oo(r,e){const t=r/4,n=r/2,i="count"in e,s=e.boundingData;for(let a=0;a<6;a++)tl[t+a]=s[a];if(i)if(e.buffer){const a=e.buffer;nl.set(new Uint8Array(a),r);for(let o=r,c=r+a.byteLength;o<c;o+=ui){const l=o/2;tt(l,Ir)||(di[o/4+6]+=t)}return r+a.byteLength}else{const a=e.offset,o=e.count;return di[t+6]=a,Ir[n+14]=o,Ir[n+15]=Rr,r+ui}else{const a=e.left,o=e.right,c=e.splitAxis;let l;if(l=oo(r+ui,a),l/4>Ad)throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return di[t+6]=l/4,l=oo(l,o),di[t+7]=c,l}}function Id(r,e){const t=(r.index?r.index.count:r.attributes.position.count)/3,n=t>2**16,i=n?4:2,s=e?new SharedArrayBuffer(t*i):new ArrayBuffer(t*i),a=n?new Uint32Array(s):new Uint16Array(s);for(let o=0,c=a.length;o<c;o++)a[o]=o;return a}function zd(r,e,t,n,i){const{maxDepth:s,verbose:a,maxLeafTris:o,strategy:c,onProgress:l,indirect:u}=i,p=r._indirectBuffer,m=r.geometry,f=m.index?m.index.array:null,x=u?Rd:kd,w=sn(m),g=new Float32Array(6);let v=!1;const _=new ro;return io(e,t,n,_.boundingData,g),M(_,t,n,g),_;function S(T){l&&l(T/w)}function M(T,E,P,z=null,R=0){if(!v&&R>=s&&(v=!0,a&&(console.warn(`MeshBVH: Max depth of ${s} reached when generating BVH. Consider increasing maxDepth.`),console.warn(m))),P<=o||R>=s)return S(E+P),T.offset=E,T.count=P,T;const A=Ed(T.boundingData,z,e,E,P,c);if(A.axis===-1)return S(E+P),T.offset=E,T.count=P,T;const B=x(p,f,e,E,P,A);if(B===E||B===E+P)S(E+P),T.offset=E,T.count=P;else{T.splitAxis=A.axis;const O=new ro,U=E,L=B-E;T.left=O,io(e,U,L,O.boundingData,g),M(O,U,L,g,R+1);const G=new ro,H=B,Q=P-L;T.right=G,io(e,H,Q,G.boundingData,g),M(G,H,Q,g,R+1)}return T}}function Bd(r,e){const t=r.geometry;e.indirect&&(r._indirectBuffer=Id(t,e.useSharedArrayBuffer),Td(t,e.range)&&!e.verbose&&console.warn('MeshBVH: Provided geometry contains groups or a range that do not fully span the vertex contents while using the "indirect" option. BVH may incorrectly report intersections on unrendered portions of the geometry.')),r._indirectBuffer||_d(t,e);const n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Yc(t,e.range),s=Md(t,null,i[0].offset,i[0].count),a=e.indirect?i:Zc(t,e.range);r._roots=a.map(o=>{const c=zd(r,s,o.offset,o.count,e),l=so(c),u=new n(ui*l);return Od(0,c,u),u})}class Zt{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,i=-1/0;for(let s=0,a=e.length;s<a;s++){const o=e[s][t];n=o<n?o:n,i=o>i?o:i}this.min=n,this.max=i}setFromPoints(e,t){let n=1/0,i=-1/0;for(let s=0,a=t.length;s<a;s++){const o=t[s],c=e.dot(o);n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}isSeparated(e){return this.min>e.max||e.min>this.max}}Zt.prototype.setFromBox=function(){const r=new q;return function(e,t){const n=t.min,i=t.max;let s=1/0,a=-1/0;for(let o=0;o<=1;o++)for(let c=0;c<=1;c++)for(let l=0;l<=1;l++){r.x=n.x*o+i.x*(1-o),r.y=n.y*c+i.y*(1-c),r.z=n.z*l+i.z*(1-l);const u=e.dot(r);s=Math.min(u,s),a=Math.max(u,a)}this.min=s,this.max=a}}();const Nd=function(){const r=new q,e=new q,t=new q;return function(n,i,s){const a=n.start,o=r,c=i.start,l=e;t.subVectors(a,c),r.subVectors(n.end,n.start),e.subVectors(i.end,i.start);const u=t.dot(l),p=l.dot(o),m=l.dot(l),f=t.dot(o),x=o.dot(o)*m-p*p;let w,g;x!==0?w=(u*p-f*m)/x:w=0,g=(u+w*p)/m,s.x=w,s.y=g}}(),ao=function(){const r=new en,e=new q,t=new q;return function(n,i,s,a){Nd(n,i,r);let o=r.x,c=r.y;if(o>=0&&o<=1&&c>=0&&c<=1){n.at(o,s),i.at(c,a);return}else if(o>=0&&o<=1){c<0?i.at(0,a):i.at(1,a),n.closestPointToPoint(a,!0,s);return}else if(c>=0&&c<=1){o<0?n.at(0,s):n.at(1,s),i.closestPointToPoint(s,!0,a);return}else{let l;o<0?l=n.start:l=n.end;let u;c<0?u=i.start:u=i.end;const p=e,m=t;if(n.closestPointToPoint(u,!0,e),i.closestPointToPoint(l,!0,t),p.distanceToSquared(u)<=m.distanceToSquared(l)){s.copy(p),a.copy(u);return}else{s.copy(l),a.copy(m);return}}}}(),Ud=function(){const r=new q,e=new q,t=new ea,n=new Wt;return function(i,s){const{radius:a,center:o}=i,{a:c,b:l,c:u}=s;if(n.start=c,n.end=l,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a||(n.start=c,n.end=u,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a)||(n.start=l,n.end=u,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a))return!0;const p=s.getPlane(t);if(Math.abs(p.distanceToPoint(o))<=a){const m=p.projectPoint(o,e);if(s.containsPoint(m))return!0}return!1}}(),Dd=["x","y","z"],Kt=1e-15,il=Kt*Kt;function yt(r){return Math.abs(r)<Kt}class gt extends fn{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new q),this.satBounds=new Array(4).fill().map(()=>new Zt),this.points=[this.a,this.b,this.c],this.plane=new ea,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new Wt,this.needsUpdate=!0}intersectsSphere(e){return Ud(e,this)}update(){const e=this.a,t=this.b,n=this.c,i=this.points,s=this.satAxes,a=this.satBounds,o=s[0],c=a[0];this.getNormal(o),c.setFromPoints(o,i);const l=s[1],u=a[1];l.subVectors(e,t),u.setFromPoints(l,i);const p=s[2],m=a[2];p.subVectors(t,n),m.setFromPoints(p,i);const f=s[3],x=a[3];f.subVectors(n,e),x.setFromPoints(f,i);const w=l.length(),g=p.length(),v=f.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,w<Kt?g<Kt||v<Kt?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(e),this.degenerateSegment.end.copy(n)):g<Kt?v<Kt?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(t),this.degenerateSegment.end.copy(e)):v<Kt&&(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(n),this.degenerateSegment.end.copy(t)),this.plane.setFromNormalAndCoplanarPoint(o,e),this.needsUpdate=!1}}gt.prototype.closestPointToSegment=function(){const r=new q,e=new q,t=new Wt;return function(n,i=null,s=null){const{start:a,end:o}=n,c=this.points;let l,u=1/0;for(let p=0;p<3;p++){const m=(p+1)%3;t.start.copy(c[p]),t.end.copy(c[m]),ao(t,n,r,e),l=r.distanceToSquared(e),l<u&&(u=l,i&&i.copy(r),s&&s.copy(e))}return this.closestPointToPoint(a,r),l=a.distanceToSquared(r),l<u&&(u=l,i&&i.copy(r),s&&s.copy(a)),this.closestPointToPoint(o,r),l=o.distanceToSquared(r),l<u&&(u=l,i&&i.copy(r),s&&s.copy(o)),Math.sqrt(u)}}(),gt.prototype.intersectsTriangle=function(){const r=new gt,e=new Zt,t=new Zt,n=new q,i=new q,s=new q,a=new q,o=new Wt,c=new Wt,l=new q,u=new en,p=new en;function m(S,M,T,E){const P=n;!S.isDegenerateIntoPoint&&!S.isDegenerateIntoSegment?P.copy(S.plane.normal):P.copy(M.plane.normal);const z=S.satBounds,R=S.satAxes;for(let O=1;O<4;O++){const U=z[O],L=R[O];if(e.setFromPoints(L,M.points),U.isSeparated(e)||(a.copy(P).cross(L),e.setFromPoints(a,S.points),t.setFromPoints(a,M.points),e.isSeparated(t)))return!1}const A=M.satBounds,B=M.satAxes;for(let O=1;O<4;O++){const U=A[O],L=B[O];if(e.setFromPoints(L,S.points),U.isSeparated(e)||(a.crossVectors(P,L),e.setFromPoints(a,S.points),t.setFromPoints(a,M.points),e.isSeparated(t)))return!1}return T&&(E||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),T.start.set(0,0,0),T.end.set(0,0,0)),!0}function f(S,M,T,E,P,z,R,A,B,O,U){let L=R/(R-A);O.x=E+(P-E)*L,U.start.subVectors(M,S).multiplyScalar(L).add(S),L=R/(R-B),O.y=E+(z-E)*L,U.end.subVectors(T,S).multiplyScalar(L).add(S)}function x(S,M,T,E,P,z,R,A,B,O,U){if(P>0)f(S.c,S.a,S.b,E,M,T,B,R,A,O,U);else if(z>0)f(S.b,S.a,S.c,T,M,E,A,R,B,O,U);else if(A*B>0||R!=0)f(S.a,S.b,S.c,M,T,E,R,A,B,O,U);else if(A!=0)f(S.b,S.a,S.c,T,M,E,A,R,B,O,U);else if(B!=0)f(S.c,S.a,S.b,E,M,T,B,R,A,O,U);else return!0;return!1}function w(S,M,T,E){const P=M.degenerateSegment,z=S.plane.distanceToPoint(P.start),R=S.plane.distanceToPoint(P.end);return yt(z)?yt(R)?m(S,M,T,E):(T&&(T.start.copy(P.start),T.end.copy(P.start)),S.containsPoint(P.start)):yt(R)?(T&&(T.start.copy(P.end),T.end.copy(P.end)),S.containsPoint(P.end)):S.plane.intersectLine(P,n)!=null?(T&&(T.start.copy(n),T.end.copy(n)),S.containsPoint(n)):!1}function g(S,M,T){const E=M.a;return yt(S.plane.distanceToPoint(E))&&S.containsPoint(E)?(T&&(T.start.copy(E),T.end.copy(E)),!0):!1}function v(S,M,T){const E=S.degenerateSegment,P=M.a;return E.closestPointToPoint(P,!0,n),P.distanceToSquared(n)<il?(T&&(T.start.copy(P),T.end.copy(P)),!0):!1}function _(S,M,T,E){if(S.isDegenerateIntoSegment)if(M.isDegenerateIntoSegment){const P=S.degenerateSegment,z=M.degenerateSegment,R=i,A=s;P.delta(R),z.delta(A);const B=n.subVectors(z.start,P.start),O=R.x*A.y-R.y*A.x;if(yt(O))return!1;const U=(B.x*A.y-B.y*A.x)/O,L=-(R.x*B.y-R.y*B.x)/O;if(U<0||U>1||L<0||L>1)return!1;const G=P.start.z+R.z*U,H=z.start.z+A.z*L;return yt(G-H)?(T&&(T.start.copy(P.start).addScaledVector(R,U),T.end.copy(P.start).addScaledVector(R,U)),!0):!1}else return M.isDegenerateIntoPoint?v(S,M,T):w(M,S,T,E);else{if(S.isDegenerateIntoPoint)return M.isDegenerateIntoPoint?M.a.distanceToSquared(S.a)<il?(T&&(T.start.copy(S.a),T.end.copy(S.a)),!0):!1:M.isDegenerateIntoSegment?v(M,S,T):g(M,S,T);if(M.isDegenerateIntoPoint)return g(S,M,T);if(M.isDegenerateIntoSegment)return w(S,M,T,E)}}return function(S,M=null,T=!1){this.needsUpdate&&this.update(),S.isExtendedTriangle?S.needsUpdate&&S.update():(r.copy(S),r.update(),S=r);const E=_(this,S,M,T);if(E!==void 0)return E;const P=this.plane,z=S.plane;let R=z.distanceToPoint(this.a),A=z.distanceToPoint(this.b),B=z.distanceToPoint(this.c);yt(R)&&(R=0),yt(A)&&(A=0),yt(B)&&(B=0);const O=R*A,U=R*B;if(O>0&&U>0)return!1;let L=P.distanceToPoint(S.a),G=P.distanceToPoint(S.b),H=P.distanceToPoint(S.c);yt(L)&&(L=0),yt(G)&&(G=0),yt(H)&&(H=0);const Q=L*G,j=L*H;if(Q>0&&j>0)return!1;i.copy(P.normal),s.copy(z.normal);const pe=i.cross(s);let ie=0,he=Math.abs(pe.x);const oe=Math.abs(pe.y);oe>he&&(he=oe,ie=1),Math.abs(pe.z)>he&&(ie=2);const le=Dd[ie],xe=this.a[le],ge=this.b[le],de=this.c[le],se=S.a[le],Ge=S.b[le],Ie=S.c[le];if(x(this,xe,ge,de,O,U,R,A,B,u,o))return m(this,S,M,T);if(x(S,se,Ge,Ie,Q,j,L,G,H,p,c))return m(this,S,M,T);if(u.y<u.x){const Ee=u.y;u.y=u.x,u.x=Ee,l.copy(o.start),o.start.copy(o.end),o.end.copy(l)}if(p.y<p.x){const Ee=p.y;p.y=p.x,p.x=Ee,l.copy(c.start),c.start.copy(c.end),c.end.copy(l)}return u.y<p.x||p.y<u.x?!1:(M&&(p.x>u.x?M.start.copy(c.start):M.start.copy(o.start),p.y<u.y?M.end.copy(c.end):M.end.copy(o.end)),!0)}}(),gt.prototype.distanceToPoint=function(){const r=new q;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}(),gt.prototype.distanceToTriangle=function(){const r=new q,e=new q,t=["a","b","c"],n=new Wt,i=new Wt;return function(s,a=null,o=null){const c=a||o?n:null;if(this.intersectsTriangle(s,c))return(a||o)&&(a&&c.getCenter(a),o&&c.getCenter(o)),0;let l=1/0;for(let u=0;u<3;u++){let p;const m=t[u],f=s[m];this.closestPointToPoint(f,r),p=f.distanceToSquared(r),p<l&&(l=p,a&&a.copy(r),o&&o.copy(f));const x=this[m];s.closestPointToPoint(x,r),p=x.distanceToSquared(r),p<l&&(l=p,a&&a.copy(x),o&&o.copy(r))}for(let u=0;u<3;u++){const p=t[u],m=t[(u+1)%3];n.set(this[p],this[m]);for(let f=0;f<3;f++){const x=t[f],w=t[(f+1)%3];i.set(s[x],s[w]),ao(n,i,r,e);const g=r.distanceToSquared(e);g<l&&(l=g,a&&a.copy(r),o&&o.copy(e))}}return Math.sqrt(l)}}();class Je{constructor(e,t,n){this.isOrientedBox=!0,this.min=new q,this.max=new q,this.matrix=new Et,this.invMatrix=new Et,this.points=new Array(8).fill().map(()=>new q),this.satAxes=new Array(3).fill().map(()=>new q),this.satBounds=new Array(3).fill().map(()=>new Zt),this.alignedSatBounds=new Array(3).fill().map(()=>new Zt),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),n&&this.matrix.copy(n)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}}Je.prototype.update=function(){return function(){const r=this.matrix,e=this.min,t=this.max,n=this.points;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){const p=1*c|2*l|4*u,m=n[p];m.x=c?t.x:e.x,m.y=l?t.y:e.y,m.z=u?t.z:e.z,m.applyMatrix4(r)}const i=this.satBounds,s=this.satAxes,a=n[0];for(let c=0;c<3;c++){const l=s[c],u=i[c],p=1<<c,m=n[p];l.subVectors(a,m),u.setFromPoints(l,n)}const o=this.alignedSatBounds;o[0].setFromPointsField(n,"x"),o[1].setFromPointsField(n,"y"),o[2].setFromPointsField(n,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}(),Je.prototype.intersectsBox=function(){const r=new Zt;return function(e){this.needsUpdate&&this.update();const t=e.min,n=e.max,i=this.satBounds,s=this.satAxes,a=this.alignedSatBounds;if(r.min=t.x,r.max=n.x,a[0].isSeparated(r)||(r.min=t.y,r.max=n.y,a[1].isSeparated(r))||(r.min=t.z,r.max=n.z,a[2].isSeparated(r)))return!1;for(let o=0;o<3;o++){const c=s[o],l=i[o];if(r.setFromBox(c,e),l.isSeparated(r))return!1}return!0}}(),Je.prototype.intersectsTriangle=function(){const r=new gt,e=new Array(3),t=new Zt,n=new Zt,i=new q;return function(s){this.needsUpdate&&this.update(),s.isExtendedTriangle?s.needsUpdate&&s.update():(r.copy(s),r.update(),s=r);const a=this.satBounds,o=this.satAxes;e[0]=s.a,e[1]=s.b,e[2]=s.c;for(let p=0;p<3;p++){const m=a[p],f=o[p];if(t.setFromPoints(f,e),m.isSeparated(t))return!1}const c=s.satBounds,l=s.satAxes,u=this.points;for(let p=0;p<3;p++){const m=c[p],f=l[p];if(t.setFromPoints(f,u),m.isSeparated(t))return!1}for(let p=0;p<3;p++){const m=o[p];for(let f=0;f<4;f++){const x=l[f];if(i.crossVectors(m,x),t.setFromPoints(i,e),n.setFromPoints(i,u),t.isSeparated(n))return!1}}return!0}}(),Je.prototype.closestPointToPoint=function(){return function(r,e){return this.needsUpdate&&this.update(),e.copy(r).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),e}}(),Je.prototype.distanceToPoint=function(){const r=new q;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}(),Je.prototype.distanceToBox=function(){const r=["x","y","z"],e=new Array(12).fill().map(()=>new Wt),t=new Array(12).fill().map(()=>new Wt),n=new q,i=new q;return function(s,a=0,o=null,c=null){if(this.needsUpdate&&this.update(),this.intersectsBox(s))return(o||c)&&(s.getCenter(i),this.closestPointToPoint(i,n),s.closestPointToPoint(n,i),o&&o.copy(n),c&&c.copy(i)),0;const l=a*a,u=s.min,p=s.max,m=this.points;let f=1/0;for(let w=0;w<8;w++){const g=m[w];i.copy(g).clamp(u,p);const v=g.distanceToSquared(i);if(v<f&&(f=v,o&&o.copy(g),c&&c.copy(i),v<l))return Math.sqrt(v)}let x=0;for(let w=0;w<3;w++)for(let g=0;g<=1;g++)for(let v=0;v<=1;v++){const _=(w+1)%3,S=(w+2)%3,M=g<<_|v<<S,T=1<<w|g<<_|v<<S,E=m[M],P=m[T];e[x].set(E,P);const z=r[w],R=r[_],A=r[S],B=t[x],O=B.start,U=B.end;O[z]=u[z],O[R]=g?u[R]:p[R],O[A]=v?u[A]:p[R],U[z]=p[z],U[R]=g?u[R]:p[R],U[A]=v?u[A]:p[R],x++}for(let w=0;w<=1;w++)for(let g=0;g<=1;g++)for(let v=0;v<=1;v++){i.x=w?p.x:u.x,i.y=g?p.y:u.y,i.z=v?p.z:u.z,this.closestPointToPoint(i,n);const _=i.distanceToSquared(n);if(_<f&&(f=_,o&&o.copy(n),c&&c.copy(i),_<l))return Math.sqrt(_)}for(let w=0;w<12;w++){const g=e[w];for(let v=0;v<12;v++){const _=t[v];ao(g,_,n,i);const S=n.distanceToSquared(i);if(S<f&&(f=S,o&&o.copy(n),c&&c.copy(i),S<l))return Math.sqrt(S)}}return Math.sqrt(f)}}();class co{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){const e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}}class Ld extends co{constructor(){super(()=>new gt)}}const vt=new Ld;class Fd{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const e=[];let t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}}const ye=new Fd;let an,Un;const Dn=[],zr=new co(()=>new It);function Vd(r,e,t,n,i,s){an=zr.getPrimitive(),Un=zr.getPrimitive(),Dn.push(an,Un),ye.setBuffer(r._roots[e]);const a=lo(0,r.geometry,t,n,i,s);ye.clearBuffer(),zr.releasePrimitive(an),zr.releasePrimitive(Un),Dn.pop(),Dn.pop();const o=Dn.length;return o>0&&(Un=Dn[o-1],an=Dn[o-2]),a}function lo(r,e,t,n,i=null,s=0,a=0){const{float32Array:o,uint16Array:c,uint32Array:l}=ye;let u=r*2;if(tt(u,c)){const p=ct(r,l),m=pt(u,c);return be(r,o,an),n(p,m,!1,a,s+r,an)}else{let p=function(B){const{uint16Array:O,uint32Array:U}=ye;let L=B*2;for(;!tt(L,O);)B=ft(B),L=B*2;return ct(B,U)},m=function(B){const{uint16Array:O,uint32Array:U}=ye;let L=B*2;for(;!tt(L,O);)B=mt(B,U),L=B*2;return ct(B,U)+pt(L,O)};const f=ft(r),x=mt(r,l);let w=f,g=x,v,_,S,M;if(i&&(S=an,M=Un,be(w,o,S),be(g,o,M),v=i(S),_=i(M),_<v)){w=x,g=f;const B=v;v=_,_=B,S=M}S||(S=an,be(w,o,S));const T=tt(w*2,c),E=t(S,T,v,a+1,s+w);let P;if(E===eo){const B=p(w),O=m(w)-B;P=n(B,O,!0,a+1,s+w,S)}else P=E&&lo(w,e,t,n,i,s,a+1);if(P)return!0;M=Un,be(g,o,M);const z=tt(g*2,c),R=t(M,z,_,a+1,s+g);let A;if(R===eo){const B=p(g),O=m(g)-B;A=n(B,O,!0,a+1,s+g,M)}else A=R&&lo(g,e,t,n,i,s,a+1);return!!A}}const pi=new q,uo=new q;function jd(r,e,t={},n=0,i=1/0){const s=n*n,a=i*i;let o=1/0,c=null;if(r.shapecast({boundsTraverseOrder:u=>(pi.copy(e).clamp(u.min,u.max),pi.distanceToSquared(e)),intersectsBounds:(u,p,m)=>m<o&&m<a,intersectsTriangle:(u,p)=>{u.closestPointToPoint(e,pi);const m=e.distanceToSquared(pi);return m<o&&(uo.copy(pi),o=m,c=p),m<s}}),o===1/0)return null;const l=Math.sqrt(o);return t.point?t.point.copy(uo):t.point=uo.clone(),t.distance=l,t.faceIndex=c,t}const Br=parseInt(ta)>=169,Jd=parseInt(ta)<=161,gn=new q,vn=new q,Sn=new q,Nr=new en,Ur=new en,Dr=new en,rl=new q,sl=new q,ol=new q,fi=new q;function Gd(r,e,t,n,i,s,a,o){let c;if(s===Jl?c=r.intersectTriangle(n,t,e,!0,i):c=r.intersectTriangle(e,t,n,s!==ms,i),c===null)return null;const l=r.origin.distanceTo(i);return l<a||l>o?null:{distance:l,point:i.clone()}}function Wd(r,e,t,n,i,s,a,o,c,l,u){gn.fromBufferAttribute(e,s),vn.fromBufferAttribute(e,a),Sn.fromBufferAttribute(e,o);const p=Gd(r,gn,vn,Sn,fi,c,l,u);if(p){if(n){Nr.fromBufferAttribute(n,s),Ur.fromBufferAttribute(n,a),Dr.fromBufferAttribute(n,o),p.uv=new en;const f=fn.getInterpolation(fi,gn,vn,Sn,Nr,Ur,Dr,p.uv);Br||(p.uv=f)}if(i){Nr.fromBufferAttribute(i,s),Ur.fromBufferAttribute(i,a),Dr.fromBufferAttribute(i,o),p.uv1=new en;const f=fn.getInterpolation(fi,gn,vn,Sn,Nr,Ur,Dr,p.uv1);Br||(p.uv1=f),Jd&&(p.uv2=p.uv1)}if(t){rl.fromBufferAttribute(t,s),sl.fromBufferAttribute(t,a),ol.fromBufferAttribute(t,o),p.normal=new q;const f=fn.getInterpolation(fi,gn,vn,Sn,rl,sl,ol,p.normal);p.normal.dot(r.direction)>0&&p.normal.multiplyScalar(-1),Br||(p.normal=f)}const m={a:s,b:a,c:o,normal:new q,materialIndex:0};if(fn.getNormal(gn,vn,Sn,m.normal),p.face=m,p.faceIndex=s,Br){const f=new q;fn.getBarycoord(fi,gn,vn,Sn,f),p.barycoord=f}}return p}function Lr(r,e,t,n,i,s,a){const o=n*3;let c=o+0,l=o+1,u=o+2;const p=r.index;r.index&&(c=p.getX(c),l=p.getX(l),u=p.getX(u));const{position:m,normal:f,uv:x,uv1:w}=r.attributes,g=Wd(t,m,f,x,w,c,l,u,e,s,a);return g?(g.faceIndex=n,i&&i.push(g),g):null}function Ce(r,e,t,n){const i=r.a,s=r.b,a=r.c;let o=e,c=e+1,l=e+2;t&&(o=t.getX(o),c=t.getX(c),l=t.getX(l)),i.x=n.getX(o),i.y=n.getY(o),i.z=n.getZ(o),s.x=n.getX(c),s.y=n.getY(c),s.z=n.getZ(c),a.x=n.getX(l),a.y=n.getY(l),a.z=n.getZ(l)}function Hd(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let u=n,p=n+i;u<p;u++)Lr(c,e,t,u,s,a,o)}function qd(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,u=null;for(let p=n,m=n+i;p<m;p++){let f;f=Lr(o,e,t,p,null,s,a),f&&f.distance<l&&(u=f,l=f.distance)}return u}function Xd(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let u=r,p=e+r;u<p;u++){let m;if(m=u,Ce(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function Yd(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const u=r._roots;for(let m=0,f=u.length;m<f;m++)s=u[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),p(0,l),l+=s.byteLength;function p(m,f,x=!1){const w=m*2;if(o[w+15]===Rr){const g=a[m+6],v=o[w+14];let _=1/0,S=1/0,M=1/0,T=-1/0,E=-1/0,P=-1/0;for(let z=3*g,R=3*(g+v);z<R;z++){let A=n[z];const B=i.getX(A),O=i.getY(A),U=i.getZ(A);B<_&&(_=B),B>T&&(T=B),O<S&&(S=O),O>E&&(E=O),U<M&&(M=U),U>P&&(P=U)}return c[m+0]!==_||c[m+1]!==S||c[m+2]!==M||c[m+3]!==T||c[m+4]!==E||c[m+5]!==P?(c[m+0]=_,c[m+1]=S,c[m+2]=M,c[m+3]=T,c[m+4]=E,c[m+5]=P,!0):!1}else{const g=m+8,v=a[m+6],_=g+f,S=v+f;let M=x,T=!1,E=!1;e?M||(T=e.has(_),E=e.has(S),M=!T&&!E):(T=!0,E=!0);const P=M||T,z=M||E;let R=!1;P&&(R=p(g,f,M));let A=!1;z&&(A=p(v,f,M));const B=R||A;if(B)for(let O=0;O<3;O++){const U=g+O,L=v+O,G=c[U],H=c[U+3],Q=c[L],j=c[L+3];c[m+O]=G<Q?G:Q,c[m+O+3]=H>j?H:j}return B}}}function cn(r,e,t,n,i){let s,a,o,c,l,u;const p=1/t.direction.x,m=1/t.direction.y,f=1/t.direction.z,x=t.origin.x,w=t.origin.y,g=t.origin.z;let v=e[r],_=e[r+3],S=e[r+1],M=e[r+3+1],T=e[r+2],E=e[r+3+2];return p>=0?(s=(v-x)*p,a=(_-x)*p):(s=(_-x)*p,a=(v-x)*p),m>=0?(o=(S-w)*m,c=(M-w)*m):(o=(M-w)*m,c=(S-w)*m),s>c||o>a||((o>s||isNaN(s))&&(s=o),(c<a||isNaN(a))&&(a=c),f>=0?(l=(T-g)*f,u=(E-g)*f):(l=(E-g)*f,u=(T-g)*f),s>u||l>a)?!1:((l>s||s!==s)&&(s=l),(u<a||a!==a)&&(a=u),s<=i&&a>=n)}function Zd(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let u=n,p=n+i;u<p;u++){let m=l?l[u]:u;Lr(c,e,t,m,s,a,o)}}function Kd(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,u=null;for(let p=n,m=n+i;p<m;p++){let f;f=Lr(o,e,t,c?c[p]:p,null,s,a),f&&f.distance<l&&(u=f,l=f.distance)}return u}function Qd(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let u=r,p=e+r;u<p;u++){let m;if(m=t.resolveTriangleIndex(u),Ce(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function $d(r,e,t,n,i,s,a){ye.setBuffer(r._roots[e]),ho(0,r,t,n,i,s,a),ye.clearBuffer()}function ho(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=ye,u=r*2;if(tt(u,c)){const p=ct(r,l),m=pt(u,c);Hd(e,t,n,p,m,i,s,a)}else{const p=ft(r);cn(p,o,n,s,a)&&ho(p,e,t,n,i,s,a);const m=mt(r,l);cn(m,o,n,s,a)&&ho(m,e,t,n,i,s,a)}}const ep=["x","y","z"];function tp(r,e,t,n,i,s){ye.setBuffer(r._roots[e]);const a=po(0,r,t,n,i,s);return ye.clearBuffer(),a}function po(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=ye;let l=r*2;if(tt(l,o)){const u=ct(r,c),p=pt(l,o);return qd(e,t,n,u,p,i,s)}else{const u=el(r,c),p=ep[u],m=n.direction[p]>=0;let f,x;m?(f=ft(r),x=mt(r,c)):(f=mt(r,c),x=ft(r));const w=cn(f,a,n,i,s)?po(f,e,t,n,i,s):null;if(w){const v=w.point[p];if(m?v<=a[x+u]:v>=a[x+u+3])return w}const g=cn(x,a,n,i,s)?po(x,e,t,n,i,s):null;return w&&g?w.distance<=g.distance?w:g:w||g||null}}const Fr=new It,Ln=new gt,Fn=new gt,mi=new Et,al=new Je,Vr=new Je;function np(r,e,t,n){ye.setBuffer(r._roots[e]);const i=fo(0,r,t,n);return ye.clearBuffer(),i}function fo(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=ye;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),al.set(t.boundingBox.min,t.boundingBox.max,n),i=al),tt(c,a)){const l=e.geometry,u=l.index,p=l.attributes.position,m=t.index,f=t.attributes.position,x=ct(r,o),w=pt(c,a);if(mi.copy(n).invert(),t.boundsTree)return be(r,s,Vr),Vr.matrix.copy(mi),Vr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:g=>Vr.intersectsBox(g),intersectsTriangle:g=>{g.a.applyMatrix4(n),g.b.applyMatrix4(n),g.c.applyMatrix4(n),g.needsUpdate=!0;for(let v=x*3,_=(w+x)*3;v<_;v+=3)if(Ce(Fn,v,u,p),Fn.needsUpdate=!0,g.intersectsTriangle(Fn))return!0;return!1}});{const g=sn(t);for(let v=x*3,_=(w+x)*3;v<_;v+=3){Ce(Ln,v,u,p),Ln.a.applyMatrix4(mi),Ln.b.applyMatrix4(mi),Ln.c.applyMatrix4(mi),Ln.needsUpdate=!0;for(let S=0,M=g*3;S<M;S+=3)if(Ce(Fn,S,m,f),Fn.needsUpdate=!0,Ln.intersectsTriangle(Fn))return!0}}}else{const l=r+8,u=o[r+6];return be(l,s,Fr),!!(i.intersectsBox(Fr)&&fo(l,e,t,n,i)||(be(u,s,Fr),i.intersectsBox(Fr)&&fo(u,e,t,n,i)))}}const jr=new Et,mo=new Je,yi=new Je,ip=new q,rp=new q,sp=new q,op=new q;function ap(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),mo.set(e.boundingBox.min,e.boundingBox.max,t),mo.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,u=e.attributes.position,p=e.index,m=vt.getPrimitive(),f=vt.getPrimitive();let x=ip,w=rp,g=null,v=null;i&&(g=sp,v=op);let _=1/0,S=null,M=null;return jr.copy(t).invert(),yi.matrix.copy(jr),r.shapecast({boundsTraverseOrder:T=>mo.distanceToBox(T),intersectsBounds:(T,E,P)=>P<_&&P<a?(E&&(yi.min.copy(T.min),yi.max.copy(T.max),yi.needsUpdate=!0),!0):!1,intersectsRange:(T,E)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:P=>yi.distanceToBox(P),intersectsBounds:(P,z,R)=>R<_&&R<a,intersectsRange:(P,z)=>{for(let R=P,A=P+z;R<A;R++){Ce(f,3*R,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let B=T,O=T+E;B<O;B++){Ce(m,3*B,l,c),m.needsUpdate=!0;const U=m.distanceToTriangle(f,x,g);if(U<_&&(w.copy(x),v&&v.copy(g),_=U,S=B,M=R),U<s)return!0}}}});{const P=sn(e);for(let z=0,R=P;z<R;z++){Ce(f,3*z,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let A=T,B=T+E;A<B;A++){Ce(m,3*A,l,c),m.needsUpdate=!0;const O=m.distanceToTriangle(f,x,g);if(O<_&&(w.copy(x),v&&v.copy(g),_=O,S=A,M=z),O<s)return!0}}}}}),vt.releasePrimitive(m),vt.releasePrimitive(f),_===1/0?null:(n.point?n.point.copy(w):n.point=w.clone(),n.distance=_,n.faceIndex=S,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(jr),w.applyMatrix4(jr),i.distance=w.sub(i.point).length(),i.faceIndex=M),n)}function cp(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const u=r._roots;for(let m=0,f=u.length;m<f;m++)s=u[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),p(0,l),l+=s.byteLength;function p(m,f,x=!1){const w=m*2;if(o[w+15]===Rr){const g=a[m+6],v=o[w+14];let _=1/0,S=1/0,M=1/0,T=-1/0,E=-1/0,P=-1/0;for(let z=g,R=g+v;z<R;z++){const A=3*r.resolveTriangleIndex(z);for(let B=0;B<3;B++){let O=A+B;O=n?n[O]:O;const U=i.getX(O),L=i.getY(O),G=i.getZ(O);U<_&&(_=U),U>T&&(T=U),L<S&&(S=L),L>E&&(E=L),G<M&&(M=G),G>P&&(P=G)}}return c[m+0]!==_||c[m+1]!==S||c[m+2]!==M||c[m+3]!==T||c[m+4]!==E||c[m+5]!==P?(c[m+0]=_,c[m+1]=S,c[m+2]=M,c[m+3]=T,c[m+4]=E,c[m+5]=P,!0):!1}else{const g=m+8,v=a[m+6],_=g+f,S=v+f;let M=x,T=!1,E=!1;e?M||(T=e.has(_),E=e.has(S),M=!T&&!E):(T=!0,E=!0);const P=M||T,z=M||E;let R=!1;P&&(R=p(g,f,M));let A=!1;z&&(A=p(v,f,M));const B=R||A;if(B)for(let O=0;O<3;O++){const U=g+O,L=v+O,G=c[U],H=c[U+3],Q=c[L],j=c[L+3];c[m+O]=G<Q?G:Q,c[m+O+3]=H>j?H:j}return B}}}function lp(r,e,t,n,i,s,a){ye.setBuffer(r._roots[e]),yo(0,r,t,n,i,s,a),ye.clearBuffer()}function yo(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=ye,u=r*2;if(tt(u,c)){const p=ct(r,l),m=pt(u,c);Zd(e,t,n,p,m,i,s,a)}else{const p=ft(r);cn(p,o,n,s,a)&&yo(p,e,t,n,i,s,a);const m=mt(r,l);cn(m,o,n,s,a)&&yo(m,e,t,n,i,s,a)}}const up=["x","y","z"];function hp(r,e,t,n,i,s){ye.setBuffer(r._roots[e]);const a=go(0,r,t,n,i,s);return ye.clearBuffer(),a}function go(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=ye;let l=r*2;if(tt(l,o)){const u=ct(r,c),p=pt(l,o);return Kd(e,t,n,u,p,i,s)}else{const u=el(r,c),p=up[u],m=n.direction[p]>=0;let f,x;m?(f=ft(r),x=mt(r,c)):(f=mt(r,c),x=ft(r));const w=cn(f,a,n,i,s)?go(f,e,t,n,i,s):null;if(w){const v=w.point[p];if(m?v<=a[x+u]:v>=a[x+u+3])return w}const g=cn(x,a,n,i,s)?go(x,e,t,n,i,s):null;return w&&g?w.distance<=g.distance?w:g:w||g||null}}const Jr=new It,Vn=new gt,jn=new gt,gi=new Et,cl=new Je,Gr=new Je;function dp(r,e,t,n){ye.setBuffer(r._roots[e]);const i=vo(0,r,t,n);return ye.clearBuffer(),i}function vo(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=ye;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),cl.set(t.boundingBox.min,t.boundingBox.max,n),i=cl),tt(c,a)){const l=e.geometry,u=l.index,p=l.attributes.position,m=t.index,f=t.attributes.position,x=ct(r,o),w=pt(c,a);if(gi.copy(n).invert(),t.boundsTree)return be(r,s,Gr),Gr.matrix.copy(gi),Gr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:g=>Gr.intersectsBox(g),intersectsTriangle:g=>{g.a.applyMatrix4(n),g.b.applyMatrix4(n),g.c.applyMatrix4(n),g.needsUpdate=!0;for(let v=x,_=w+x;v<_;v++)if(Ce(jn,3*e.resolveTriangleIndex(v),u,p),jn.needsUpdate=!0,g.intersectsTriangle(jn))return!0;return!1}});{const g=sn(t);for(let v=x,_=w+x;v<_;v++){const S=e.resolveTriangleIndex(v);Ce(Vn,3*S,u,p),Vn.a.applyMatrix4(gi),Vn.b.applyMatrix4(gi),Vn.c.applyMatrix4(gi),Vn.needsUpdate=!0;for(let M=0,T=g*3;M<T;M+=3)if(Ce(jn,M,m,f),jn.needsUpdate=!0,Vn.intersectsTriangle(jn))return!0}}}else{const l=r+8,u=o[r+6];return be(l,s,Jr),!!(i.intersectsBox(Jr)&&vo(l,e,t,n,i)||(be(u,s,Jr),i.intersectsBox(Jr)&&vo(u,e,t,n,i)))}}const Wr=new Et,So=new Je,vi=new Je,pp=new q,fp=new q,mp=new q,yp=new q;function gp(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),So.set(e.boundingBox.min,e.boundingBox.max,t),So.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,u=e.attributes.position,p=e.index,m=vt.getPrimitive(),f=vt.getPrimitive();let x=pp,w=fp,g=null,v=null;i&&(g=mp,v=yp);let _=1/0,S=null,M=null;return Wr.copy(t).invert(),vi.matrix.copy(Wr),r.shapecast({boundsTraverseOrder:T=>So.distanceToBox(T),intersectsBounds:(T,E,P)=>P<_&&P<a?(E&&(vi.min.copy(T.min),vi.max.copy(T.max),vi.needsUpdate=!0),!0):!1,intersectsRange:(T,E)=>{if(e.boundsTree){const P=e.boundsTree;return P.shapecast({boundsTraverseOrder:z=>vi.distanceToBox(z),intersectsBounds:(z,R,A)=>A<_&&A<a,intersectsRange:(z,R)=>{for(let A=z,B=z+R;A<B;A++){const O=P.resolveTriangleIndex(A);Ce(f,3*O,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let U=T,L=T+E;U<L;U++){const G=r.resolveTriangleIndex(U);Ce(m,3*G,l,c),m.needsUpdate=!0;const H=m.distanceToTriangle(f,x,g);if(H<_&&(w.copy(x),v&&v.copy(g),_=H,S=U,M=A),H<s)return!0}}}})}else{const P=sn(e);for(let z=0,R=P;z<R;z++){Ce(f,3*z,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let A=T,B=T+E;A<B;A++){const O=r.resolveTriangleIndex(A);Ce(m,3*O,l,c),m.needsUpdate=!0;const U=m.distanceToTriangle(f,x,g);if(U<_&&(w.copy(x),v&&v.copy(g),_=U,S=A,M=z),U<s)return!0}}}}}),vt.releasePrimitive(m),vt.releasePrimitive(f),_===1/0?null:(n.point?n.point.copy(w):n.point=w.clone(),n.distance=_,n.faceIndex=S,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(Wr),w.applyMatrix4(Wr),i.distance=w.sub(i.point).length(),i.faceIndex=M),n)}function vp(){return typeof SharedArrayBuffer<"u"}const Si=new ye.constructor,Hr=new ye.constructor,ln=new co(()=>new It),Jn=new It,Gn=new It,bo=new It,xo=new It;let wo=!1;function Sp(r,e,t,n){if(wo)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");wo=!0;const i=r._roots,s=e._roots;let a,o=0,c=0;const l=new Et().copy(t).invert();for(let u=0,p=i.length;u<p;u++){Si.setBuffer(i[u]),c=0;const m=ln.getPrimitive();be(0,Si.float32Array,m),m.applyMatrix4(l);for(let f=0,x=s.length;f<x&&(Hr.setBuffer(s[f]),a=Rt(0,0,t,l,n,o,c,0,0,m),Hr.clearBuffer(),c+=s[f].length,!a);f++);if(ln.releasePrimitive(m),Si.clearBuffer(),o+=i[u].length,a)break}return wo=!1,a}function Rt(r,e,t,n,i,s=0,a=0,o=0,c=0,l=null,u=!1){let p,m;u?(p=Hr,m=Si):(p=Si,m=Hr);const f=p.float32Array,x=p.uint32Array,w=p.uint16Array,g=m.float32Array,v=m.uint32Array,_=m.uint16Array,S=r*2,M=e*2,T=tt(S,w),E=tt(M,_);let P=!1;if(E&&T)u?P=i(ct(e,v),pt(e*2,_),ct(r,x),pt(r*2,w),c,a+e,o,s+r):P=i(ct(r,x),pt(r*2,w),ct(e,v),pt(e*2,_),o,s+r,c,a+e);else if(E){const z=ln.getPrimitive();be(e,g,z),z.applyMatrix4(t);const R=ft(r),A=mt(r,x);be(R,f,Jn),be(A,f,Gn);const B=z.intersectsBox(Jn),O=z.intersectsBox(Gn);P=B&&Rt(e,R,n,t,i,a,s,c,o+1,z,!u)||O&&Rt(e,A,n,t,i,a,s,c,o+1,z,!u),ln.releasePrimitive(z)}else{const z=ft(e),R=mt(e,v);be(z,g,bo),be(R,g,xo);const A=l.intersectsBox(bo),B=l.intersectsBox(xo);if(A&&B)P=Rt(r,z,t,n,i,s,a,o,c+1,l,u)||Rt(r,R,t,n,i,s,a,o,c+1,l,u);else if(A)if(T)P=Rt(r,z,t,n,i,s,a,o,c+1,l,u);else{const O=ln.getPrimitive();O.copy(bo).applyMatrix4(t);const U=ft(r),L=mt(r,x);be(U,f,Jn),be(L,f,Gn);const G=O.intersectsBox(Jn),H=O.intersectsBox(Gn);P=G&&Rt(z,U,n,t,i,a,s,c,o+1,O,!u)||H&&Rt(z,L,n,t,i,a,s,c,o+1,O,!u),ln.releasePrimitive(O)}else if(B)if(T)P=Rt(r,R,t,n,i,s,a,o,c+1,l,u);else{const O=ln.getPrimitive();O.copy(xo).applyMatrix4(t);const U=ft(r),L=mt(r,x);be(U,f,Jn),be(L,f,Gn);const G=O.intersectsBox(Jn),H=O.intersectsBox(Gn);P=G&&Rt(R,U,n,t,i,a,s,c,o+1,O,!u)||H&&Rt(R,L,n,t,i,a,s,c,o+1,O,!u),ln.releasePrimitive(O)}}return P}const qr=new Je,ll=new It,bp={strategy:$s,maxDepth:40,maxLeafTris:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null};class _i{static serialize(e,t={}){t={cloneBuffers:!0,...t};const n=e.geometry,i=e._roots,s=e._indirectBuffer,a=n.getIndex();let o;return t.cloneBuffers?o={roots:i.map(c=>c.slice()),index:a?a.array.slice():null,indirectBuffer:s?s.slice():null}:o={roots:i,index:a?a.array:null,indirectBuffer:s},o}static deserialize(e,t,n={}){n={setIndex:!0,indirect:!!e.indirectBuffer,...n};const{index:i,roots:s,indirectBuffer:a}=e,o=new _i(t,{...n,[no]:!0});if(o._roots=s,o._indirectBuffer=a||null,n.setIndex){const c=t.getIndex();if(c===null){const l=new ot(e.index,1,!1);t.setIndex(l)}else c.array!==i&&(c.array.set(i),c.needsUpdate=!0)}return o}get indirect(){return!!this._indirectBuffer}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({...bp,[no]:!1},t),t.useSharedArrayBuffer&&!vp())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=e,this._roots=null,this._indirectBuffer=null,t[no]||(Bd(this,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new It))),this.resolveTriangleIndex=t.indirect?n=>this._indirectBuffer[n]:n=>n}refit(e=null){return(this.indirect?cp:Yd)(this,e)}traverse(e,t=0){const n=this._roots[t],i=new Uint32Array(n),s=new Uint16Array(n);a(0);function a(o,c=0){const l=o*2,u=s[l+15]===Rr;if(u){const p=i[o+6],m=s[l+14];e(c,u,new Float32Array(n,o*4,6),p,m)}else{const p=o+ui/4,m=i[o+6],f=i[o+7];e(c,u,new Float32Array(n,o*4,6),f)||(a(p,c+1),a(m,c+1))}}}raycast(e,t=na,n=0,i=1/0){const s=this._roots,a=this.geometry,o=[],c=t.isMaterial,l=Array.isArray(t),u=a.groups,p=c?t.side:t,m=this.indirect?lp:$d;for(let f=0,x=s.length;f<x;f++){const w=l?t[u[f].materialIndex].side:p,g=o.length;if(m(this,f,w,e,o,n,i),l){const v=u[f].materialIndex;for(let _=g,S=o.length;_<S;_++)o[_].face.materialIndex=v}}return o}raycastFirst(e,t=na,n=0,i=1/0){const s=this._roots,a=this.geometry,o=t.isMaterial,c=Array.isArray(t);let l=null;const u=a.groups,p=o?t.side:t,m=this.indirect?hp:tp;for(let f=0,x=s.length;f<x;f++){const w=c?t[u[f].materialIndex].side:p,g=m(this,f,w,e,n,i);g!=null&&(l==null||g.distance<l.distance)&&(l=g,c&&(g.face.materialIndex=u[f].materialIndex))}return l}intersectsGeometry(e,t){let n=!1;const i=this._roots,s=this.indirect?dp:np;for(let a=0,o=i.length;a<o&&(n=s(this,a,e,t),!n);a++);return n}shapecast(e){const t=vt.getPrimitive(),n=this.indirect?Qd:Xd;let{boundsTraverseOrder:i,intersectsBounds:s,intersectsRange:a,intersectsTriangle:o}=e;if(a&&o){const p=a;a=(m,f,x,w,g)=>p(m,f,x,w,g)?!0:n(m,f,this,o,x,w,t)}else a||(o?a=(p,m,f,x)=>n(p,m,this,o,f,x,t):a=(p,m,f)=>f);let c=!1,l=0;const u=this._roots;for(let p=0,m=u.length;p<m;p++){const f=u[p];if(c=Vd(this,p,s,a,i,l),c)break;l+=f.byteLength}return vt.releasePrimitive(t),c}bvhcast(e,t,n){let{intersectsRanges:i,intersectsTriangles:s}=n;const a=vt.getPrimitive(),o=this.geometry.index,c=this.geometry.attributes.position,l=this.indirect?x=>{const w=this.resolveTriangleIndex(x);Ce(a,w*3,o,c)}:x=>{Ce(a,x*3,o,c)},u=vt.getPrimitive(),p=e.geometry.index,m=e.geometry.attributes.position,f=e.indirect?x=>{const w=e.resolveTriangleIndex(x);Ce(u,w*3,p,m)}:x=>{Ce(u,x*3,p,m)};if(s){const x=(w,g,v,_,S,M,T,E)=>{for(let P=v,z=v+_;P<z;P++){f(P),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let R=w,A=w+g;R<A;R++)if(l(R),a.needsUpdate=!0,s(a,u,R,P,S,M,T,E))return!0}return!1};if(i){const w=i;i=function(g,v,_,S,M,T,E,P){return w(g,v,_,S,M,T,E,P)?!0:x(g,v,_,S,M,T,E,P)}}else i=x}return Sp(this,e,t,i)}intersectsBox(e,t){return qr.set(e.min,e.max,t),qr.needsUpdate=!0,this.shapecast({intersectsBounds:n=>qr.intersectsBox(n),intersectsTriangle:n=>qr.intersectsTriangle(n)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},i={},s=0,a=1/0){return(this.indirect?gp:ap)(this,e,t,n,i,s,a)}closestPointToPoint(e,t={},n=0,i=1/0){return jd(this,e,t,n,i)}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{be(0,new Float32Array(t),ll),e.union(ll)}),e}}function ul(r,e,t){return r===null?null:(r.point.applyMatrix4(e.matrixWorld),r.distance=r.point.distanceTo(t.ray.origin),r.object=e,r)}const Xr=new Hl,hl=new q,dl=new Et,xp=gs.prototype.raycast,wp=Wl.prototype.raycast,pl=new q,Le=new gs,Yr=[];function _p(r,e){this.isBatchedMesh?Tp.call(this,r,e):Mp.call(this,r,e)}function Tp(r,e){if(this.boundsTrees){const t=this.boundsTrees,n=this._drawInfo||this._instanceInfo,i=this._drawRanges||this._geometryInfo,s=this.matrixWorld;Le.material=this.material,Le.geometry=this.geometry;const a=Le.geometry.boundsTree,o=Le.geometry.drawRange;Le.geometry.boundingSphere===null&&(Le.geometry.boundingSphere=new Gl);for(let c=0,l=n.length;c<l;c++){if(!this.getVisibleAt(c))continue;const u=n[c].geometryIndex;if(Le.geometry.boundsTree=t[u],this.getMatrixAt(c,Le.matrixWorld).premultiply(s),!Le.geometry.boundsTree){this.getBoundingBoxAt(u,Le.geometry.boundingBox),this.getBoundingSphereAt(u,Le.geometry.boundingSphere);const p=i[u];Le.geometry.setDrawRange(p.start,p.count)}Le.raycast(r,Yr);for(let p=0,m=Yr.length;p<m;p++){const f=Yr[p];f.object=this,f.batchId=c,e.push(f)}Yr.length=0}Le.geometry.boundsTree=a,Le.geometry.drawRange=o,Le.material=null,Le.geometry=null}else wp.call(this,r,e)}function Mp(r,e){if(this.geometry.boundsTree){if(this.material===void 0)return;dl.copy(this.matrixWorld).invert(),Xr.copy(r.ray).applyMatrix4(dl),pl.setFromMatrixScale(this.matrixWorld),hl.copy(Xr.direction).multiply(pl);const t=hl.length(),n=r.near/t,i=r.far/t,s=this.geometry.boundsTree;if(r.firstHitOnly===!0){const a=ul(s.raycastFirst(Xr,this.material,n,i),this,r);a&&e.push(a)}else{const a=s.raycast(Xr,this.material,n,i);for(let o=0,c=a.length;o<c;o++){const l=ul(a[o],this,r);l&&e.push(l)}}}else xp.call(this,r,e)}function Cp(r={}){return this.boundsTree=new _i(this,r),this.boundsTree}const bn=new q,xn=new q,wn=new q,fl=new vs,Zr=new q,_o=new q,ml=new vs,yl=new vs,Kr=new Et,gl=new Et;function bi(r,e){if(!r&&!e)return;const t=r.count===e.count,n=r.normalized===e.normalized,i=r.array.constructor===e.array.constructor,s=r.itemSize===e.itemSize;if(!t||!n||!i||!s)throw new Error}function xi(r,e=null){const t=r.array.constructor,n=r.normalized,i=r.itemSize,s=e===null?r.count:e;return new ot(new t(i*s),i,n)}function vl(r,e,t=0){if(r.isInterleavedBufferAttribute){const n=r.itemSize;for(let i=0,s=r.count;i<s;i++){const a=i+t;e.setX(a,r.getX(i)),n>=2&&e.setY(a,r.getY(i)),n>=3&&e.setZ(a,r.getZ(i)),n>=4&&e.setW(a,r.getW(i))}}else{const n=e.array,i=n.constructor,s=n.BYTES_PER_ELEMENT*r.itemSize*t;new i(n.buffer,s,r.array.length).set(r.array)}}function Ep(r,e,t){const n=r.elements,i=e.elements;for(let s=0,a=i.length;s<a;s++)n[s]+=i[s]*t}function Sl(r,e,t){const n=r.skeleton,i=r.geometry,s=n.bones,a=n.boneInverses;ml.fromBufferAttribute(i.attributes.skinIndex,e),yl.fromBufferAttribute(i.attributes.skinWeight,e),Kr.elements.fill(0);for(let o=0;o<4;o++){const c=yl.getComponent(o);if(c!==0){const l=ml.getComponent(o);gl.multiplyMatrices(s[l].matrixWorld,a[l]),Ep(Kr,gl,c)}}return Kr.multiply(r.bindMatrix).premultiply(r.bindMatrixInverse),t.transformDirection(Kr),t}function To(r,e,t,n,i){Zr.set(0,0,0);for(let s=0,a=r.length;s<a;s++){const o=e[s],c=r[s];o!==0&&(_o.fromBufferAttribute(c,n),t?Zr.addScaledVector(_o,o):Zr.addScaledVector(_o.sub(i),o))}i.add(Zr)}function Pp(r,e={useGroups:!1,updateIndex:!1,skipAttributes:[]},t=new Kn){const n=r[0].index!==null,{useGroups:i=!1,updateIndex:s=!1,skipAttributes:a=[]}=e,o=new Set(Object.keys(r[0].attributes)),c={};let l=0;t.clearGroups();for(let u=0;u<r.length;++u){const p=r[u];let m=0;if(n!==(p.index!==null))throw new Error("StaticGeometryGenerator: All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.");for(const f in p.attributes){if(!o.has(f))throw new Error('StaticGeometryGenerator: All geometries must have compatible attributes; make sure "'+f+'" attribute exists among all geometries, or in none of them.');c[f]===void 0&&(c[f]=[]),c[f].push(p.attributes[f]),m++}if(m!==o.size)throw new Error("StaticGeometryGenerator: Make sure all geometries have the same number of attributes.");if(i){let f;if(n)f=p.index.count;else if(p.attributes.position!==void 0)f=p.attributes.position.count;else throw new Error("StaticGeometryGenerator: The geometry must have either an index or a position attribute");t.addGroup(l,f,u),l+=f}}if(n){let u=!1;if(!t.index){let p=0;for(let m=0;m<r.length;++m)p+=r[m].index.count;t.setIndex(new ot(new Uint32Array(p),1,!1)),u=!0}if(s||u){const p=t.index;let m=0,f=0;for(let x=0;x<r.length;++x){const w=r[x],g=w.index;if(a[x]!==!0)for(let v=0;v<g.count;++v)p.setX(m,g.getX(v)+f),m++;f+=w.attributes.position.count}}}for(const u in c){const p=c[u];if(!(u in t.attributes)){let x=0;for(const w in p)x+=p[w].count;t.setAttribute(u,xi(c[u][0],x))}const m=t.attributes[u];let f=0;for(let x=0,w=p.length;x<w;x++){const g=p[x];a[x]!==!0&&vl(g,m,f),f+=g.count}}return t}function kp(r,e){if(r===null||e===null)return r===e;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;t++)if(r[t]!==e[t])return!1;return!0}function Rp(r){const{index:e,attributes:t}=r;if(e)for(let n=0,i=e.count;n<i;n+=3){const s=e.getX(n),a=e.getX(n+2);e.setX(n,a),e.setX(n+2,s)}else for(const n in t){const i=t[n],s=i.itemSize;for(let a=0,o=i.count;a<o;a+=3)for(let c=0;c<s;c++){const l=i.getComponent(a,c),u=i.getComponent(a+2,c);i.setComponent(a,c,u),i.setComponent(a+2,c,l)}}return r}class Ap{constructor(e){this.matrixWorld=new Et,this.geometryHash=null,this.boneMatrices=null,this.primitiveCount=-1,this.mesh=e,this.update()}update(){const e=this.mesh,t=e.geometry,n=e.skeleton,i=(t.index?t.index.count:t.attributes.position.count)/3;if(this.matrixWorld.copy(e.matrixWorld),this.geometryHash=t.attributes.position.version,this.primitiveCount=i,n){n.boneTexture||n.computeBoneTexture(),n.update();const s=n.boneMatrices;!this.boneMatrices||this.boneMatrices.length!==s.length?this.boneMatrices=s.slice():this.boneMatrices.set(s)}else this.boneMatrices=null}didChange(){const e=this.mesh,t=e.geometry,n=(t.index?t.index.count:t.attributes.position.count)/3;return!(this.matrixWorld.equals(e.matrixWorld)&&this.geometryHash===t.attributes.position.version&&kp(e.skeleton&&e.skeleton.boneMatrices||null,this.boneMatrices)&&this.primitiveCount===n)}}class Op{constructor(e){Array.isArray(e)||(e=[e]);const t=[];e.forEach(n=>{n.traverseVisible(i=>{i.isMesh&&t.push(i)})}),this.meshes=t,this.useGroups=!0,this.applyWorldTransforms=!0,this.attributes=["position","normal","color","tangent","uv","uv2"],this._intermediateGeometry=new Array(t.length).fill().map(()=>new Kn),this._diffMap=new WeakMap}getMaterials(){const e=[];return this.meshes.forEach(t=>{Array.isArray(t.material)?e.push(...t.material):e.push(t.material)}),e}generate(e=new Kn){let t=[];const{meshes:n,useGroups:i,_intermediateGeometry:s,_diffMap:a}=this;for(let o=0,c=n.length;o<c;o++){const l=n[o],u=s[o],p=a.get(l);!p||p.didChange(l)?(this._convertToStaticGeometry(l,u),t.push(!1),p?p.update():a.set(l,new Ap(l))):t.push(!0)}if(s.length===0){e.setIndex(null);const o=e.attributes;for(const c in o)e.deleteAttribute(c);for(const c in this.attributes)e.setAttribute(this.attributes[c],new ot(new Float32Array(0),4,!1))}else Pp(s,{useGroups:i,skipAttributes:t},e);for(const o in e.attributes)e.attributes[o].needsUpdate=!0;return e}_convertToStaticGeometry(e,t=new Kn){const n=e.geometry,i=this.applyWorldTransforms,s=this.attributes.includes("normal"),a=this.attributes.includes("tangent"),o=n.attributes,c=t.attributes;!t.index&&n.index&&(t.index=n.index.clone()),c.position||t.setAttribute("position",xi(o.position)),s&&!c.normal&&o.normal&&t.setAttribute("normal",xi(o.normal)),a&&!c.tangent&&o.tangent&&t.setAttribute("tangent",xi(o.tangent)),bi(n.index,t.index),bi(o.position,c.position),s&&bi(o.normal,c.normal),a&&bi(o.tangent,c.tangent);const l=o.position,u=s?o.normal:null,p=a?o.tangent:null,m=n.morphAttributes.position,f=n.morphAttributes.normal,x=n.morphAttributes.tangent,w=n.morphTargetsRelative,g=e.morphTargetInfluences,v=new ql;v.getNormalMatrix(e.matrixWorld),n.index&&t.index.array.set(n.index.array);for(let _=0,S=o.position.count;_<S;_++)bn.fromBufferAttribute(l,_),u&&xn.fromBufferAttribute(u,_),p&&(fl.fromBufferAttribute(p,_),wn.fromBufferAttribute(p,_)),g&&(m&&To(m,g,w,_,bn),f&&To(f,g,w,_,xn),x&&To(x,g,w,_,wn)),e.isSkinnedMesh&&(e.applyBoneTransform(_,bn),u&&Sl(e,_,xn),p&&Sl(e,_,wn)),i&&bn.applyMatrix4(e.matrixWorld),c.position.setXYZ(_,bn.x,bn.y,bn.z),u&&(i&&xn.applyNormalMatrix(v),c.normal.setXYZ(_,xn.x,xn.y,xn.z)),p&&(i&&wn.transformDirection(e.matrixWorld),c.tangent.setXYZW(_,wn.x,wn.y,wn.z,fl.w));for(const _ in this.attributes){const S=this.attributes[_];S==="position"||S==="tangent"||S==="normal"||!(S in o)||(c[S]||t.setAttribute(S,xi(o[S])),bi(o[S],c[S]),vl(o[S],c[S]))}return e.matrixWorld.determinant()<0&&Rp(t),t}}const Ip=Object.freeze(Object.defineProperty({__proto__:null,AVERAGE:Hc,CENTER:$s,CONTAINED:eo,ExtendedTriangle:gt,MeshBVH:_i,OrientedBox:Je,SAH:qc,StaticGeometryGenerator:Op,acceleratedRaycast:_p,computeBoundsTree:Cp},Symbol.toStringTag,{value:"Module"}));class zp{constructor(e){this.name="WorkerBase",this.running=!1,this.worker=e,this.worker.onerror=t=>{throw t.message?new Error(`${this.name}: Could not create Web Worker with error "${t.message}"`):new Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...e){if(this.running)throw new Error("GenerateMeshBVHWorker: Already running job.");if(this.worker===null)throw new Error("GenerateMeshBVHWorker: Worker has been disposed.");this.running=!0;const t=this.runTask(this.worker,...e);return t.finally(()=>{this.running=!1}),t}dispose(){this.worker.terminate(),this.worker=null}}const St={node:"node",material:"material",camera:"camera",light:"light"},_n="KHR_animation_pointer",Bp={CUBICSPLINE:void 0,LINEAR:ia,STEP:Yl};class Np{constructor(e){this.name=_n,this.parser=e,this.animationPointerResolver=null}setAnimationPointerResolver(e){return this.animationPointerResolver=e,this}loadAnimationTargetFromChannel(e){const t=e.target,n=t.node!==void 0?t.node:t.id;return this.parser.getDependency("node",n)}loadAnimationTargetFromChannelWithAnimationPointer(e){Dp();const t=e.target,n=t.extensions&&t.extensions[_n]&&t.path&&t.path==="pointer";if(!n)return null;let i,s=St.node,a;if(n){const c=t.extensions[_n];let l=c.pointer;if(!l){console.warn("Invalid path",c,t);return}if(l.startsWith("/materials/")?s=St.material:l.startsWith("/extensions/KHR_lights_punctual/lights/")?s=St.light:l.startsWith("/cameras/")&&(s=St.camera),a=this._tryResolveTargetId(l,s),a===null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,l);return}switch(s){case St.material:const u=("/materials/"+a.toString()+"/").length,p=l.substring(0,u);switch(i=l.substring(u),i){case"pbrMetallicRoughness/baseColorFactor":i="color";break;case"pbrMetallicRoughness/roughnessFactor":i="roughness";break;case"pbrMetallicRoughness/metallicFactor":i="metalness";break;case"emissiveFactor":i="emissive";break;case"alphaCutoff":i="alphaTest";break;case"occlusionTexture/strength":i="aoMapIntensity";break;case"normalTexture/scale":i="normalScale";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale":i="map/repeat";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset":i="map/offset";break;case"emissiveTexture/extensions/KHR_texture_transform/scale":i="emissiveMap/repeat";break;case"emissiveTexture/extensions/KHR_texture_transform/offset":i="emissiveMap/offset";break;case"extensions/KHR_materials_emissive_strength/emissiveStrength":i="emissiveIntensity";break;case"extensions/KHR_materials_transmission/transmissionFactor":i="transmission";break;case"extensions/KHR_materials_ior/ior":i="ior";break;case"extensions/KHR_materials_volume/thicknessFactor":i="thickness";break;case"extensions/KHR_materials_volume/attenuationColor":i="attenuationColor";break;case"extensions/KHR_materials_volume/attenuationDistance":i="attenuationDistance";break;case"extensions/KHR_materials_iridescence/iridescenceFactor":i="iridescence";break;case"extensions/KHR_materials_iridescence/iridescenceIor":i="iridescenceIOR";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMinimum":i="iridescenceThicknessRange[0]";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMaximum":i="iridescenceThicknessRange[1]";break;case"extensions/KHR_materials_clearcoat/clearcoatFactor":i="clearcoat";break;case"extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor":i="clearcoatRoughness";break;case"extensions/KHR_materials_sheen/sheenColorFactor":i="sheenColor";break;case"extensions/KHR_materials_sheen/sheenRoughnessFactor":i="sheenRoughness";break;case"extensions/KHR_materials_specular/specularFactor":i="specularIntensity";break;case"extensions/KHR_materials_specular/specularColorFactor":i="specularColor";break}l=p+i;break;case St.node:const m=("/nodes/"+a.toString()+"/").length,f=l.substring(0,m);switch(i=l.substring(m),i){case"translation":i="position";break;case"rotation":i="quaternion";break;case"scale":i="scale";break;case"weights":i="morphTargetInfluences";break;case"extensions/KHR_node_visibility/visible":i="visible";break}l=f+i;break;case St.light:const x=("/extensions/KHR_lights_punctual/lights/"+a.toString()+"/").length;switch(i=l.substring(x),i){case"color":break;case"intensity":break;case"spot/innerConeAngle":i="penumbra";break;case"spot/outerConeAngle":i="angle";break;case"range":i="distance";break}l="/lights/"+a.toString()+"/"+i;break;case St.camera:const w=("/cameras/"+a.toString()+"/").length,g=l.substring(0,w);switch(i=l.substring(w),i){case"perspective/yfov":i="fov";break;case"perspective/znear":case"orthographic/znear":i="near";break;case"perspective/zfar":case"orthographic/zfar":i="far";break;case"perspective/aspect":i="aspect";break;case"orthographic/xmag":i="zoom";break;case"orthographic/ymag":i="zoom";break}l=g+i;break}this.animationPointerResolver?.resolvePath&&(l=this.animationPointerResolver.resolvePath(l)),t.extensions[_n].pointer=l}if(a==null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,t);return}let o;return s===St.node?o=this.parser.getDependency("node",a):s===St.material?o=this.parser.getDependency("material",a):s===St.light?o=this.parser.getDependency("light",a):s===St.camera?o=this.parser.getDependency("camera",a):console.error("Unhandled type",s),o}createAnimationTracksWithAnimationPointer(e,t,n,i,s){if(!(s.extensions&&s.extensions[_n]&&s.path&&s.path==="pointer"))return null;let a=s.extensions[_n].pointer;if(!a)return null;const o=[];a=a.replaceAll("/",".");const c=a.split(".");var l=e.name!==void 0&&e.name!==null?e.name:e.uuid;if(c[2]=l,c[3]==="morphTargetInfluences"&&e.type==="Group"){for(const m of e.children)m instanceof Xl&&m.morphTargetInfluences&&(c[3]=m.name,c[4]="morphTargetInfluences",p(this.parser));return o}p(this.parser);function u(m,f){try{const x=f.split(".").filter(Boolean),w=x[x.length-1].replace(/\[.*\]$/,"");return w in m?typeof m[w]=="boolean":!1}catch{return!1}}function p(m){a=c.join(".");let f,x=!1;switch(n.itemSize){case 1:Object.prototype.toString.call(n.array)==="[object Uint8Array]"&&u(e,a)?(f=eu,x=!0):f=tu;break;case 2:case 3:f=$l;break;case 4:a.endsWith(".quaternion")?f=Kl:f=Ql;break}if(!f){console.warn("Unsupported output accessor format",n);return}const w=i.interpolation!==void 0?Bp[i.interpolation]:ia;let g=m._getArrayFromAccessor(n);a.endsWith(".fov")&&(g=g.map(_=>_/Math.PI*180)),x&&(g=g.map(_=>_>0));const v=new f(a,t.array,g,w);if(w==="CUBICSPLINE"&&m._createCubicSplineTrackInterpolant(v),o.push(v),a&&n.itemSize===4&&a.startsWith(".materials.")&&a.endsWith(".color")){const _=new Float32Array(g.length/4);for(let M=0,T=g.length/4;M<T;M+=1)_[M]=g[M*4+3];const S=new f(a.replace(".color",".opacity"),t.array,_,w);w==="CUBICSPLINE"&&m._createCubicSplineTrackInterpolant(v),o.push(S)}}return o}_tryResolveTargetId(e,t){let n="";return t==="node"?n=e.substring(7):t==="material"?n=e.substring(11):t==="light"?n=e.substring(39):t==="camera"&&(n=e.substring(9)),n=n.substring(0,n.indexOf("/")),Number.parseInt(n)}loadAnimation(e){const t=this,n=this.parser.json,i=this.parser,s=n.animations[e],a=s.name?s.name:"animation_"+e,o=[],c=[],l=[],u=[],p=[];for(let m=0,f=s.channels.length;m<f;m++){const x=s.channels[m],w=s.samplers[x.sampler],g=x.target,v=s.parameters!==void 0?s.parameters[w.input]:w.input,_=s.parameters!==void 0?s.parameters[w.output]:w.output;let S=t.loadAnimationTargetFromChannelWithAnimationPointer(x);S||(S=t.loadAnimationTargetFromChannel(x)),o.push(S),c.push(i.getDependency("accessor",v)),l.push(i.getDependency("accessor",_)),u.push(w),p.push(g)}return Promise.all([Promise.all(o),Promise.all(c),Promise.all(l),Promise.all(u),Promise.all(p)]).then(function(m){const f=m[0],x=m[1],w=m[2],g=m[3],v=m[4],_=[];for(let S=0,M=f.length;S<M;S++){const T=f[S],E=x[S],P=w[S],z=g[S],R=v[S];if(T===void 0)continue;T.updateMatrix&&(T.updateMatrix(),T.matrixAutoUpdate=!0);let A=t.createAnimationTracksWithAnimationPointer(T,E,P,z,R);if(A||(A=i._createAnimationTracks(T,E,P,z,R)),A)for(let B=0;B<A.length;B++)_.push(A[B])}return new Zl(a,void 0,_)})}}let bl=!1,Up=null;function Dp(){if(bl)return;bl=!0;const r=Up||=ra.findNode;ra.findNode=function(e,t){if(!t)return r(e,t);if(t.startsWith(".materials.")){const n=t.substring(11).substring(t.indexOf(".")),i=n.indexOf("."),s=i<0?n:n.substring(0,i);let a=null;return e.traverse(o=>{a!==null||o.type!=="Mesh"&&o.type!=="SkinnedMesh"||o.material&&(o.material.uuid===s||o.material.name===s)&&(a=o.material,a!==null&&(n.endsWith(".map")?a=a.map:n.endsWith(".emissiveMap")&&(a=a.emissiveMap)))}),a}else if(t.startsWith(".nodes.")||t.startsWith(".lights.")||t.startsWith(".cameras.")){const n=t.split(".");let i;for(let s=1;s<n.length;s++){const a=n[s];if(a.length==36)i=e.getObjectByProperty("uuid",a);else if(i&&i[a]){const o=Number.parseInt(a);let c=a;o>=0&&(c=o),i=i[c]}else{const o=e.getObjectByName(a);o&&(i=o)}}if(!i){const s=r(e,n[2]);return s||console.warn(_n+": Property binding not found",t,e,e.name,n),s}return i}return r(e,t)}}const Lp=Object.freeze(Object.defineProperty({__proto__:null,GLTFAnimationPointerExtension:Np},Symbol.toStringTag,{value:"Module"}));export{wc as $70d766613f57b014$export$2e2bcd8739ae039,hd as BatchedParticleRenderer,Mo as Builder,wi as ByteBuffer,Mn as ConstantColor,ne as ConstantValue,At as Matrix4,_i as MeshBVH,cu as MotionController,ts as ParticleSystem,V as RenderMode,oa as SIZE_PREFIX_LENGTH,Cr as TrailParticle,nt as Vector4,zp as WorkerBase,Fu as bundler,pd as createNoise4D,iu as fetchProfile,Sd as index,Ip as index$1,Lp as index$2,nh as md5,Ku as v5};
1116
+ }`;class pd extends jc{constructor(e){super(e),this.vector_=new W,this.vector2_=new W,this.vector3_=new W,this.quaternion_=new re,this.maxParticles=1e4,this.setupBuffers(),this.rebuildMaterial()}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new Kn,this.indexBuffer=new ot(new Uint32Array(this.maxParticles*6),1),this.indexBuffer.setUsage(Xe),this.geometry.setIndex(this.indexBuffer),this.positionBuffer=new ot(new Float32Array(this.maxParticles*6),3),this.positionBuffer.setUsage(Xe),this.geometry.setAttribute("position",this.positionBuffer),this.previousBuffer=new ot(new Float32Array(this.maxParticles*6),3),this.previousBuffer.setUsage(Xe),this.geometry.setAttribute("previous",this.previousBuffer),this.nextBuffer=new ot(new Float32Array(this.maxParticles*6),3),this.nextBuffer.setUsage(Xe),this.geometry.setAttribute("next",this.nextBuffer),this.widthBuffer=new ot(new Float32Array(this.maxParticles*2),1),this.widthBuffer.setUsage(Xe),this.geometry.setAttribute("width",this.widthBuffer),this.sideBuffer=new ot(new Float32Array(this.maxParticles*2),1),this.sideBuffer.setUsage(Xe),this.geometry.setAttribute("side",this.sideBuffer),this.uvBuffer=new ot(new Float32Array(this.maxParticles*4),2),this.uvBuffer.setUsage(Xe),this.geometry.setAttribute("uv",this.uvBuffer),this.colorBuffer=new ot(new Float32Array(this.maxParticles*8),4),this.colorBuffer.setUsage(Xe),this.geometry.setAttribute("color",this.colorBuffer)}expandBuffers(e){for(;e>=this.maxParticles;)this.maxParticles*=2;this.setupBuffers()}rebuildMaterial(){this.layers.mask=this.settings.layers.mask;const e={lineWidth:{value:1},map:{value:null},useMap:{value:0},alphaMap:{value:null},useAlphaMap:{value:0},resolution:{value:new Wn(1,1)},sizeAttenuation:{value:1},visibility:{value:1},alphaTest:{value:0}},t={};if(t.USE_UV="",t.USE_COLOR_ALPHA="",this.settings.material.map&&(t.USE_MAP="",t.MAP_UV=Qs(this.settings.material.map.channel),e.map=new Ct(this.settings.material.map),e.mapTransform=new Ct(new Lt().copy(this.settings.material.map.matrix))),this.settings.material.defines&&this.settings.material.defines.USE_COLOR_AS_ALPHA!==void 0&&(t.USE_COLOR_AS_ALPHA=""),this.settings.renderMode===V.Trail)this.material=new ys({uniforms:e,defines:t,vertexShader:dd,fragmentShader:hd,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,side:this.settings.material.side,blending:this.settings.material.blending||$o,blendDst:this.settings.material.blendDst,blendSrc:this.settings.material.blendSrc,blendEquation:this.settings.material.blendEquation,premultipliedAlpha:this.settings.material.premultipliedAlpha});else throw new Error("render mode unavailable")}update(){let e=0,t=0,n=0;this.systems.forEach(i=>{for(let s=0;s<i.particleNum;s++)n+=i.particles[s].previous.length*2}),n>this.maxParticles&&this.expandBuffers(n),this.systems.forEach(i=>{i.emitter.updateMatrixWorld&&(i.emitter.updateWorldMatrix(!0,!1),i.emitter.updateMatrixWorld(!0));const s=this.quaternion_,a=this.vector2_,o=this.vector3_;i.emitter.matrixWorld.decompose(a,s,o);const c=i.particles,l=i.particleNum,u=this.settings.uTileCount,p=this.settings.vTileCount,m=1/u,f=1/p;for(let x=0;x<l;x++){const w=c[x],g=w.uvTile%p,v=Math.floor(w.uvTile/p+.001),_=w.previous.values();let S=_.next(),T=S.value,M=T;S.done||(S=_.next());let E;S.value!==void 0?E=S.value:E=M;for(let P=0;P<w.previous.length;P++,e+=2){if(this.positionBuffer.setXYZ(e,M.position.x,M.position.y,M.position.z),this.positionBuffer.setXYZ(e+1,M.position.x,M.position.y,M.position.z),i.worldSpace?(this.positionBuffer.setXYZ(e,M.position.x,M.position.y,M.position.z),this.positionBuffer.setXYZ(e+1,M.position.x,M.position.y,M.position.z)):(w.parentMatrix?this.vector_.copy(M.position).applyMatrix4(w.parentMatrix):this.vector_.copy(M.position).applyMatrix4(i.emitter.matrixWorld),this.positionBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.positionBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.previousBuffer.setXYZ(e,T.position.x,T.position.y,T.position.z),this.previousBuffer.setXYZ(e+1,T.position.x,T.position.y,T.position.z)):(w.parentMatrix?this.vector_.copy(T.position).applyMatrix4(w.parentMatrix):this.vector_.copy(T.position).applyMatrix4(i.emitter.matrixWorld),this.previousBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.previousBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),i.worldSpace?(this.nextBuffer.setXYZ(e,E.position.x,E.position.y,E.position.z),this.nextBuffer.setXYZ(e+1,E.position.x,E.position.y,E.position.z)):(w.parentMatrix?this.vector_.copy(E.position).applyMatrix4(w.parentMatrix):this.vector_.copy(E.position).applyMatrix4(i.emitter.matrixWorld),this.nextBuffer.setXYZ(e,this.vector_.x,this.vector_.y,this.vector_.z),this.nextBuffer.setXYZ(e+1,this.vector_.x,this.vector_.y,this.vector_.z)),this.sideBuffer.setX(e,-1),this.sideBuffer.setX(e+1,1),i.worldSpace)this.widthBuffer.setX(e,M.size),this.widthBuffer.setX(e+1,M.size);else if(w.parentMatrix)this.widthBuffer.setX(e,M.size),this.widthBuffer.setX(e+1,M.size);else{const O=(Math.abs(o.x)+Math.abs(o.y)+Math.abs(o.z))/3;this.widthBuffer.setX(e,M.size*O),this.widthBuffer.setX(e+1,M.size*O)}this.uvBuffer.setXY(e,(P/w.previous.length+g)*m,(p-v-1)*f),this.uvBuffer.setXY(e+1,(P/w.previous.length+g)*m,(p-v)*f),this.colorBuffer.setXYZW(e,M.color.x,M.color.y,M.color.z,M.color.w),this.colorBuffer.setXYZW(e+1,M.color.x,M.color.y,M.color.z,M.color.w),P+1<w.previous.length&&(this.indexBuffer.setX(t*3,e),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+2),t++,this.indexBuffer.setX(t*3,e+2),this.indexBuffer.setX(t*3+1,e+1),this.indexBuffer.setX(t*3+2,e+3),t++),T=M,M=E,S.done||(S=_.next(),S.value!==void 0&&(E=S.value))}}}),this.positionBuffer.clearUpdateRanges(),this.positionBuffer.addUpdateRange(0,e*3),this.positionBuffer.needsUpdate=!0,this.previousBuffer.clearUpdateRanges(),this.previousBuffer.addUpdateRange(0,e*3),this.previousBuffer.needsUpdate=!0,this.nextBuffer.clearUpdateRanges(),this.nextBuffer.addUpdateRange(0,e*3),this.nextBuffer.needsUpdate=!0,this.sideBuffer.clearUpdateRanges(),this.sideBuffer.addUpdateRange(0,e),this.sideBuffer.needsUpdate=!0,this.widthBuffer.clearUpdateRanges(),this.widthBuffer.addUpdateRange(0,e),this.widthBuffer.needsUpdate=!0,this.uvBuffer.clearUpdateRanges(),this.uvBuffer.addUpdateRange(0,e*2),this.uvBuffer.needsUpdate=!0,this.colorBuffer.clearUpdateRanges(),this.colorBuffer.addUpdateRange(0,e*4),this.colorBuffer.needsUpdate=!0,this.indexBuffer.clearUpdateRanges(),this.indexBuffer.addUpdateRange(0,t*3),this.indexBuffer.needsUpdate=!0,this.geometry.setDrawRange(0,t*3)}dispose(){this.geometry.dispose()}}class $i{get geometry(){return this._geometry}set geometry(e){if(this._geometry=e,e===void 0||typeof e=="string")return;const t=new pn;this._triangleIndexToArea.length=0;let n=0;if(!e.getIndex())return;const i=e.getIndex().array,s=i.length/3;this._triangleIndexToArea.push(0);for(let a=0;a<s;a++)t.setFromAttributeAndIndices(e.getAttribute("position"),i[a*3],i[a*3+1],i[a*3+2]),n+=t.getArea(),this._triangleIndexToArea.push(n);e.userData.triangleIndexToArea=this._triangleIndexToArea}constructor(e){this.type="mesh_surface",this._triangleIndexToArea=[],this._tempA=new q,this._tempB=new q,this._tempC=new q,e&&(this.geometry=e)}initialize(e){const t=this._geometry;if(!t||t.getIndex()===null){e.position.set(0,0,0),e.velocity.set(0,0,1).multiplyScalar(e.startSpeed);return}const n=this._triangleIndexToArea.length-1;let i=0,s=n;const a=Math.random()*this._triangleIndexToArea[n];for(;i+1<s;){const f=Math.floor((i+s)/2);a<this._triangleIndexToArea[f]?s=f:i=f}let o=Math.random(),c=Math.random();o+c>1&&(o=1-o,c=1-c);const l=t.getIndex().array[i*3],u=t.getIndex().array[i*3+1],p=t.getIndex().array[i*3+2],m=t.getAttribute("position");this._tempA.fromBufferAttribute(m,l),this._tempB.fromBufferAttribute(m,u),this._tempC.fromBufferAttribute(m,p),this._tempB.sub(this._tempA),this._tempC.sub(this._tempA),this._tempA.addScaledVector(this._tempB,o).addScaledVector(this._tempC,c),e.position.copy(this._tempA),this._tempA.copy(this._tempB).cross(this._tempC).normalize(),e.velocity.copy(this._tempA).normalize().multiplyScalar(e.startSpeed)}toJSON(){return{type:"mesh_surface",mesh:this._geometry?this._geometry.uuid:""}}static fromJSON(e,t){return new $i(t.geometries[e.geometry])}clone(){return new $i(this._geometry)}update(e,t){}}Gh({id:"three.quarks",emitterShapes:[{type:"mesh_surface",params:[["geometry",["geometry"]]],constructor:$i,loadJSON:$i.fromJSON}],behaviors:[]});class Co extends Ko{constructor(){super(),this.batches=[],this.systemToBatchIndex=new Map,this.type="BatchedRenderer",this.depthTexture=null}static equals(e,t){return e.material.side===t.material.side&&e.material.blending===t.material.blending&&e.material.blendSrc===t.material.blendSrc&&e.material.blendDst===t.material.blendDst&&e.material.blendEquation===t.material.blendEquation&&e.material.premultipliedAlpha===t.material.premultipliedAlpha&&e.material.transparent===t.material.transparent&&e.material.depthTest===t.material.depthTest&&e.material.type===t.material.type&&e.material.alphaTest===t.material.alphaTest&&e.material.map===t.material.map&&e.renderMode===t.renderMode&&e.blendTiles===t.blendTiles&&e.softParticles===t.softParticles&&e.softFarFade===t.softFarFade&&e.softNearFade===t.softNearFade&&e.uTileCount===t.uTileCount&&e.vTileCount===t.vTileCount&&e.instancingGeometry===t.instancingGeometry&&e.renderOrder===t.renderOrder&&e.layers.mask===t.layers.mask}addSystem(e){e._renderer=this;const t=e.getRendererSettings();for(let i=0;i<this.batches.length;i++)if(Co.equals(this.batches[i].settings,t)){this.batches[i].addSystem(e),this.systemToBatchIndex.set(e,i);return}let n;switch(t.renderMode){case V.Trail:n=new pd(t);break;case V.Mesh:case V.BillBoard:case V.VerticalBillBoard:case V.HorizontalBillBoard:case V.StretchedBillBoard:n=new ud(t);break}this.depthTexture&&n.applyDepthTexture(this.depthTexture),n.addSystem(e),this.batches.push(n),this.systemToBatchIndex.set(e,this.batches.length-1),this.add(n)}deleteSystem(e){const t=this.systemToBatchIndex.get(e);t!=null&&(this.batches[t].removeSystem(e),this.systemToBatchIndex.delete(e))}setDepthTexture(e){this.depthTexture=e;for(const t of this.batches)t.applyDepthTexture(e)}updateSystem(e){this.deleteSystem(e),this.addSystem(e)}update(e){this.systemToBatchIndex.forEach((t,n)=>{n.update(e)});for(let t=0;t<this.batches.length;t++)this.batches[t].update()}}const fd=Co;$h(),console.log("%c Particle system powered by three.quarks. https://quarks.art/","font-size: 14px; font-weight: bold;");const Gc=Math.sqrt(5),md=(Gc-1)/4,De=(5-Gc)/20,Pr=r=>Math.floor(r)|0,kr=new Float64Array([0,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,1,0,1,1,1,0,1,-1,1,0,-1,1,1,0,-1,-1,-1,0,1,1,-1,0,1,-1,-1,0,-1,1,-1,0,-1,-1,1,1,0,1,1,1,0,-1,1,-1,0,1,1,-1,0,-1,-1,1,0,1,-1,1,0,-1,-1,-1,0,1,-1,-1,0,-1,1,1,1,0,1,1,-1,0,1,-1,1,0,1,-1,-1,0,-1,1,1,0,-1,1,-1,0,-1,-1,1,0,-1,-1,-1,0]);function yd(r=Math.random){const e=gd(r),t=new Float64Array(e).map(a=>kr[a%32*4]),n=new Float64Array(e).map(a=>kr[a%32*4+1]),i=new Float64Array(e).map(a=>kr[a%32*4+2]),s=new Float64Array(e).map(a=>kr[a%32*4+3]);return function(a,o,c,l){let u,p,m,f,x;const w=(a+o+c+l)*md,g=Pr(a+w),v=Pr(o+w),_=Pr(c+w),S=Pr(l+w),T=(g+v+_+S)*De,M=g-T,E=v-T,P=_-T,O=S-T,R=a-M,A=o-E,B=c-P,I=l-O;let U=0,L=0,j=0,H=0;R>A?U++:L++,R>B?U++:j++,R>I?U++:H++,A>B?L++:j++,A>I?L++:H++,B>I?j++:H++;const Q=U>=3?1:0,J=L>=3?1:0,pe=j>=3?1:0,ie=H>=3?1:0,he=U>=2?1:0,oe=L>=2?1:0,le=j>=2?1:0,xe=H>=2?1:0,ge=U>=1?1:0,de=L>=1?1:0,se=j>=1?1:0,Ge=H>=1?1:0,Ie=R-Q+De,Ee=A-J+De,it=B-pe+De,ze=I-ie+De,ve=R-he+2*De,ue=A-oe+2*De,lt=B-le+2*De,Pe=I-xe+2*De,fe=R-ge+3*De,Ke=A-de+3*De,bt=B-se+3*De,xt=I-Ge+3*De,Qe=R-1+4*De,wt=A-1+4*De,ut=B-1+4*De,ht=I-1+4*De,rt=g&255,ke=v&255,We=_&255,st=S&255;let He=.6-R*R-A*A-B*B-I*I;if(He<0)u=0;else{const ae=rt+e[ke+e[We+e[st]]];He*=He,u=He*He*(t[ae]*R+n[ae]*A+i[ae]*B+s[ae]*I)}let ee=.6-Ie*Ie-Ee*Ee-it*it-ze*ze;if(ee<0)p=0;else{const ae=rt+Q+e[ke+J+e[We+pe+e[st+ie]]];ee*=ee,p=ee*ee*(t[ae]*Ie+n[ae]*Ee+i[ae]*it+s[ae]*ze)}let _t=.6-ve*ve-ue*ue-lt*lt-Pe*Pe;if(_t<0)m=0;else{const ae=rt+he+e[ke+oe+e[We+le+e[st+xe]]];_t*=_t,m=_t*_t*(t[ae]*ve+n[ae]*ue+i[ae]*lt+s[ae]*Pe)}let Ft=.6-fe*fe-Ke*Ke-bt*bt-xt*xt;if(Ft<0)f=0;else{const ae=rt+ge+e[ke+de+e[We+se+e[st+Ge]]];Ft*=Ft,f=Ft*Ft*(t[ae]*fe+n[ae]*Ke+i[ae]*bt+s[ae]*xt)}let Tt=.6-Qe*Qe-wt*wt-ut*ut-ht*ht;if(Tt<0)x=0;else{const ae=rt+1+e[ke+1+e[We+1+e[st+1]]];Tt*=Tt,x=Tt*Tt*(t[ae]*Qe+n[ae]*wt+i[ae]*ut+s[ae]*ht)}return 27*(u+p+m+f+x)}}function gd(r){const e=new Uint8Array(512);for(let t=0;t<512/2;t++)e[t]=t;for(let t=0;t<512/2-1;t++){const n=t+~~(r()*(256-t)),i=e[t];e[t]=e[n],e[n]=i}for(let t=256;t<512;t++)e[t]=e[t-256];return e}var vd=Object.defineProperty,Sd=(r,e,t)=>e in r?vd(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Me=(r,e,t)=>(Sd(r,typeof e!="symbol"?e+"":e,t),t);(function(){class r{}class e extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class t extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class n extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class i extends r{constructor(d,y="unrestricted"){super(),Me(this,"type"),Me(this,"value"),this.value=d,this.type=y}}class s extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class a extends r{}class o extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class c extends r{}class l extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class u extends r{constructor(d,y="integer"){super(),Me(this,"value"),Me(this,"type"),this.value=d,this.type=y}}class p extends r{constructor(d){super(),Me(this,"value"),this.value=d}}class m extends r{constructor(d,y,b){super(),Me(this,"value"),Me(this,"type"),Me(this,"unit"),this.value=d,this.type=y,this.unit=b}}class f extends r{}class x extends r{}class w extends r{}class g extends r{}class v extends r{}class _ extends r{}class S extends r{}class T extends r{}class M extends r{}class E extends r{}class P extends r{}class O extends r{}class R{constructor(d){Me(this,"input"),Me(this,"index",0),this.input=d}consume(){const d=this.input.codePointAt(this.index);return d!==void 0&&(this.index+=String.fromCodePoint(d).length),d}reconsume(d){d!==void 0&&(this.index-=String.fromCodePoint(d).length)}peek(){const d=[];let y=this.index;for(let b=0;b<3&&y<this.input.length;b++){const C=this.input.codePointAt(y);d.push(C),y+=String.fromCodePoint(C).length}return d}}function A(h){return h===10}function B(h){return A(h)||h===8192||h===32}function I(h){return h>=48&&h<=57}function U(h){return I(h)||h>=65&&h<=70||h>=97&&h<=102}function L(h){return function(d){return function(y){return y>=65&&y<=90}(d)||function(y){return y>=97&&y<=122}(d)}(h)||function(d){return d>=128}(h)||h===95}function j(h){return L(h)||I(h)||h===45}function H(h){return h>=0&&h<=8||h===11||h>=14&&h<=31||h===127}function Q(h,d){return h===92&&!A(d)}function J(h,d,y){return h===45?L(d)||d===45||Q(d,y):!!L(h)||h===92&&Q(h,d)}function pe(h,d,y){return h===43||h===45?I(d)||d===46&&I(y):I(h===46?d:h)}function ie(h){const d=h.consume();if(U(d)){let y=[d];for(;U(...h.peek())&&y.length<5;)y.push(h.consume());B(...h.peek())&&h.consume();const b=parseInt(String.fromCodePoint(...y),16);return b===0||b>1114111?65533:b}return d===void 0?65533:d}function he(h,d){const y=new s("");for(;;){const b=h.consume();if(b===d||b===void 0)return y;if(b===10)return h.reconsume(b),new a;if(b===92){const C=h.peek()[0];C===void 0||(A(C)?h.consume():y.value+=String.fromCodePoint(ie(h)))}else y.value+=String.fromCodePoint(b)}}function oe(h){let d="";for(;;){const y=h.consume();if(j(y))d+=String.fromCodePoint(y);else{if(!Q(...h.peek()))return h.reconsume(y),d;d+=String.fromCodePoint(ie(h))}}}function le(h){let d=function(y){let b="integer",C="";for([43,45].includes(y.peek()[0])&&(C+=String.fromCodePoint(y.consume()));I(...y.peek());)C+=String.fromCodePoint(y.consume());if(y.peek()[0]===46&&I(y.peek()[1]))for(C+=String.fromCodePoint(y.consume(),y.consume()),b="number";I(...y.peek());)C+=String.fromCodePoint(y.consume());return[69,101].includes(y.peek()[0])&&([45,43].includes(y.peek()[1])&&I(y.peek()[2])?(C+=String.fromCodePoint(y.consume(),y.consume(),y.consume()),b="number"):I(y.peek()[1])&&(C+=String.fromCodePoint(y.consume(),y.consume()),b="number")),{value:parseFloat(C),type:b}}(h);return J(...h.peek())?new m(d.value,d.type,oe(h)):h.peek()[0]===37?(h.consume(),new p(d.value)):new u(d.value,d.type)}function xe(h){for(;;){const d=h.consume();if(d===41||d===void 0)return;Q(...h.peek())&&ie(h)}}function ge(h){const d=oe(h);if(d.match(/url/i)&&h.peek()[0]===40){for(h.consume();B(h.peek()[0])&&B(h.peek()[1]);)h.consume();return[34,39].includes(h.peek()[0])||B(h.peek()[0])&&[34,39].includes(h.peek()[1])?new t(d):function(y){const b=new o("");for(;B(...y.peek());)y.consume();for(;;){const C=y.consume();if(C===41||C===void 0)return b;if(B(C)){for(;B(...y.peek());)y.consume();return y.peek()[0]===41||y.peek()[0]===void 0?(y.consume(),b):(xe(y),new c)}if([34,39,40].includes(C)||H(C))return xe(y),new c;if(C===92){if(!Q(...y.peek()))return xe(y),new c;b.value+=ie(y)}else b.value+=String.fromCodePoint(C)}}(h)}return h.peek()[0]===40?(h.consume(),new t(d)):new e(d)}function de(h){const d=h.consume(),y=h.peek();if(B(d)){for(;B(...h.peek());)h.consume();return new f}if(d===34)return he(h,d);if(d===35){if(j(y[0])||Q(...y)){const b=new i;return J(...y)&&(b.type="id"),b.value=oe(h),b}return new l(String.fromCodePoint(d))}return d===39?he(h,d):d===40?new M:d===41?new E:d===43?pe(...y)?(h.reconsume(d),le(h)):new l(String.fromCodePoint(d)):d===44?new _:d===45?pe(...h.peek())?(h.reconsume(d),le(h)):h.peek()[0]===45&&h.peek()[1]===62?(h.consume(),h.consume(),new w):J(...h.peek())?(h.reconsume(d),ge(h)):new l(String.fromCodePoint(d)):d===46?pe(...h.peek())?(h.reconsume(d),le(h)):new l(String.fromCodePoint(d)):d===58?new g:d===59?new v:d===60?y[0]===33&&y[1]===45&&y[2]===45?(h.consume(),h.consume(),h.consume(),new x):new l(String.fromCodePoint(d)):d===64?J(...y)?new n(oe(h)):new l(String.fromCodePoint(d)):d===91?new S:d===92?Q(...y)?(h.reconsume(d),ge(h)):new l(String.fromCodePoint(d)):d===93?new T:d===123?new P:d===125?new O:I(d)?(h.reconsume(d),le(h)):L(d)?(h.reconsume(d),ge(h)):d===void 0?void 0:new l(String.fromCodePoint(d))}const se=new Set(["px","deg","s","hz","dppx","number","fr"]);function Ge(h){return se.has(h.toLowerCase())}function Ie(h,d){if(["x","y"].includes(h))return h;if(!d)throw new Error("To determine the normalized axis the computedStyle of the source is required.");const y=d.writingMode=="horizontal-tb";if(h==="block")h=y?"y":"x";else{if(h!=="inline")throw new TypeError(`Invalid axis \u201C${h}\u201D`);h=y?"x":"y"}return h}function Ee(h){const d=[];let y=0;function b(){let k=0;const z=y;for(;y<h.length;){const D=h.slice(y,y+1);if(/\s/.test(D)&&k===0)break;if(D==="(")k+=1;else if(D===")"&&(k-=1,k===0)){y++;break}y++}return h.slice(z,y)}function C(){for(;/\s/.test(h.slice(y,y+1));)y++}for(;y<h.length;){const k=h.slice(y,y+1);/\s/.test(k)?C():d.push(b())}return d}function it(h,d){return h.reduce((y,b)=>(y.has(b[d])?y.get(b[d]).push(b):y.set(b[d],[b]),y),new Map)}function ze(h,d){const y=[],b=[];for(const C of h)d(C)?y.push(C):b.push(C);return[y,b]}function ve(h,d={}){function y(b){return Array.from(b).map(C=>ve(C,d))}if(h instanceof CSSUnitValue){if(h.unit==="percent"&&d.percentageReference){const C=h.value/100*d.percentageReference.value,k=d.percentageReference.unit;return new CSSUnitValue(C,k)}const b=h.toSum();if(b&&b.values.length===1&&(h=b.values[0]),h instanceof CSSUnitValue&&h.unit==="em"&&d.fontSize&&(h=new CSSUnitValue(h.value*d.fontSize.value,d.fontSize.unit)),h instanceof CSSKeywordValue){if(h.value==="e")return new CSSUnitValue(Math.E,"number");if(h.value==="pi")return new CSSUnitValue(Math.PI,"number")}return h}if(!h.operator)return h;switch(h.operator){case"sum":h=new CSSMathSum(...y(h.values));break;case"product":h=new CSSMathProduct(...y(h.values));break;case"negate":h=new CSSMathNegate(ve(h.value,d));break;case"clamp":h=new CSSMathClamp(ve(h.lower,d),ve(h.value,d),ve(h.upper,d));break;case"invert":h=new CSSMathInvert(ve(h.value,d));break;case"min":h=new CSSMathMin(...y(h.values));break;case"max":h=new CSSMathMax(...y(h.values))}if(h instanceof CSSMathMin||h instanceof CSSMathMax){const b=Array.from(h.values);if(b.every(C=>C instanceof CSSUnitValue&&C.unit!=="percent"&&Ge(C.unit)&&C.unit===b[0].unit)){const C=Math[h.operator].apply(Math,b.map(({value:k})=>k));return new CSSUnitValue(C,b[0].unit)}}if(h instanceof CSSMathMin||h instanceof CSSMathMax){const b=Array.from(h.values),[C,k]=ze(b,D=>D instanceof CSSUnitValue&&D.unit!=="percent"),z=Array.from(it(C,"unit").values());if(z.some(D=>D.length>0)){const D=z.map(N=>{const F=Math[h.operator].apply(Math,N.map(({value:X})=>X));return new CSSUnitValue(F,N[0].unit)});h=h instanceof CSSMathMin?new CSSMathMin(...D,...k):new CSSMathMax(...D,...k)}return b.length===1?b[0]:h}if(h instanceof CSSMathNegate)return h.value instanceof CSSUnitValue?new CSSUnitValue(0-h.value.value,h.value.unit):h.value instanceof CSSMathNegate?h.value.value:h;if(h instanceof CSSMathInvert)return h.value instanceof CSSMathInvert?h.value.value:h;if(h instanceof CSSMathSum){let b=function(k){const z=k.filter(D=>D instanceof CSSUnitValue);return[...k.filter(D=>!(D instanceof CSSUnitValue)),...Array.from(it(z,"unit").entries()).map(([D,N])=>{const F=N.reduce((X,{value:Z})=>X+Z,0);return new CSSUnitValue(F,D)})]},C=[];for(const k of h.values)k instanceof CSSMathSum?C.push(...k.values):C.push(k);return C=b(C),C.length===1?C[0]:new CSSMathSum(...C)}if(h instanceof CSSMathProduct){let b=[];for(const z of h.values)z instanceof CSSMathProduct?b.push(...z.values):b.push(z);const[C,k]=ze(b,z=>z instanceof CSSUnitValue&&z.unit==="number");if(C.length>1){const z=C.reduce((D,{value:N})=>D*N,1);b=[new CSSUnitValue(z,"number"),...k]}if(b.length===2){let z,D;for(const N of b)N instanceof CSSUnitValue&&N.unit==="number"?z=N:N instanceof CSSMathSum&&[...N.values].every(F=>F instanceof CSSUnitValue)&&(D=N);if(z&&D)return new CSSMathSum(...[...D.values].map(N=>new CSSUnitValue(N.value*z.value,N.unit)))}if(b.every(z=>z instanceof CSSUnitValue&&Ge(z.unit)||z instanceof CSSMathInvert&&z.value instanceof CSSUnitValue&&Ge(z.value.unit))){const z=new CSSMathProduct(...b).toSum();if(z&&z.values.length===1)return z.values[0]}return new CSSMathProduct(...b)}return h}const ue=null,lt=["percent","length","angle","time","frequency","resolution","flex"],Pe={fontRelativeLengths:{units:new Set(["em","rem","ex","rex","cap","rcap","ch","rch","ic","ric","lh","rlh"])},viewportRelativeLengths:{units:new Set(["vw","lvw","svw","dvw","vh","lvh","svh","dvh","vi","lvi","svi","dvi","vb","lvb","svb","dvb","vmin","lvmin","svmin","dvmin","vmax","lvmax","svmax","dvmax"])},absoluteLengths:{units:new Set(["cm","mm","Q","in","pt","pc","px"]),compatible:!0,canonicalUnit:"px",ratios:{cm:96/2.54,mm:96/2.54/10,Q:96/2.54/40,in:96,pc:16,pt:96/72,px:1}},angle:{units:new Set(["deg","grad","rad","turn"]),compatible:!0,canonicalUnit:"deg",ratios:{deg:1,grad:.9,rad:180/Math.PI,turn:360}},time:{units:new Set(["s","ms"]),compatible:!0,canonicalUnit:"s",ratios:{s:1,ms:.001}},frequency:{units:new Set(["hz","khz"]),compatible:!0,canonicalUnit:"hz",ratios:{hz:1,khz:1e3}},resolution:{units:new Set(["dpi","dpcm","dppx"]),compatible:!0,canonicalUnit:"dppx",ratios:{dpi:1/96,dpcm:2.54/96,dppx:1}}},fe=new Map;for(const h of Object.values(Pe))if(h.compatible)for(const d of h.units)fe.set(d,h);function Ke(h){return fe.get(h)}function bt(h,d){const y={...h};for(const b of Object.keys(d))y[b]?y[b]+=d[b]:y[b]=d[b];return y}function xt(h){return h==="number"?{}:h==="percent"?{percent:1}:Pe.absoluteLengths.units.has(h)||Pe.fontRelativeLengths.units.has(h)||Pe.viewportRelativeLengths.units.has(h)?{length:1}:Pe.angle.units.has(h)?{angle:1}:Pe.time.units.has(h)?{time:1}:Pe.frequency.units.has(h)?{frequency:1}:Pe.resolution.units.has(h)?{resolution:1}:h==="fr"?{flex:1}:ue}function Qe(h){if(h instanceof CSSUnitValue){let{unit:d,value:y}=h;const b=Ke(h.unit);return b&&d!==b.canonicalUnit&&(y*=b.ratios[d],d=b.canonicalUnit),d==="number"?[[y,{}]]:[[y,{[d]:1}]]}if(h instanceof CSSMathInvert){if(!(h.value instanceof CSSUnitValue))throw new Error("Not implemented");const d=Qe(h.value);if(d===ue||d.length>1)return ue;const y=d[0],b={};for(const[C,k]of Object.entries(y[1]))b[C]=-1*k;return d[0]=[1/y[0],b],d}if(h instanceof CSSMathProduct){let d=[[1,{}]];for(const y of h.values){const b=Qe(y),C=[];if(b===ue)return ue;for(const k of d)for(const z of b)C.push([k[0]*z[0],bt(k[1],z[1])]);d=C}return d}throw new Error("Not implemented")}function wt(h,d){if(xt(d)===ue)throw new SyntaxError("The string did not match the expected pattern.");const y=Qe(h);if(!y)throw new TypeError;if(y.length>1)throw new TypeError("Sum has more than one item");const b=function(C,k){const z=C.unit,D=C.value,N=Ke(z),F=Ke(k);return!F||N!==F?ue:new CSSUnitValue(D*F.ratios[z]/F.ratios[k],k)}(ut(y[0]),d);if(b===ue)throw new TypeError;return b}function ut(h){const[d,y]=h,b=Object.entries(y);if(b.length>1)return ue;if(b.length===0)return new CSSUnitValue(d,"number");const C=b[0];return C[1]!==1?ue:new CSSUnitValue(d,C[0])}function ht(h,...d){if(d&&d.length)throw new Error("Not implemented");const y=Qe(h).map(b=>ut(b));if(y.some(b=>b===ue))throw new TypeError("Type error");return new CSSMathSum(...y)}function rt(h,d){if(h.percentHint&&d.percentHint&&h.percentHint!==d.percentHint)return ue;const y={...h,percentHint:h.percentHint??d.percentHint};for(const b of lt)d[b]&&(y[b]??(y[b]=0),y[b]+=d[b]);return y}class ke{constructor(d,y){Me(this,"name"),Me(this,"values"),this.name=d,this.values=y}}class We{constructor(d,y){Me(this,"value"),Me(this,"associatedToken"),this.value=d,this.associatedToken=y}}function st(h){if(Array.isArray(h))return h;if(typeof h=="string")return function(d){const y=new R(d),b=[];for(;;){const C=de(y);if(C===void 0)return b;b.push(C)}}(h);throw new TypeError("Invalid input type "+typeof h)}function He(h){const d=h.shift();return d instanceof P||d instanceof S||d instanceof M?function(y,b){let C;if(b instanceof P)C=O;else if(b instanceof M)C=E;else{if(!(b instanceof S))return;C=T}const k=new We([],b);for(;;){const z=y.shift();if(z instanceof C||z===void 0)return k;y.unshift(z),k.value.push(He(y))}}(h,d):d instanceof t?function(y,b){const C=new ke(y.value,[]);for(;;){const k=b.shift();if(k instanceof E||k===void 0)return C;b.unshift(k),C.values.push(He(b))}}(d,h):d}function ee(h){if(h instanceof M||h instanceof E)return 6;if(h instanceof l)switch(h.value){case"*":case"/":return 4;case"+":case"-":return 2}}function _t(h){return h[h.length-1]}function Ft(h,d,y){const b=["+","-"].includes(h.value)?"ADDITION":"MULTIPLICATION",C=d.type===b?d.values:[d],k=y.type===b?y.values:[y];return h.value==="-"?k[0]={type:"NEGATE",value:k[0]}:h.value==="/"&&(k[0]={type:"INVERT",value:k[0]}),{type:b,values:[...C,...k]}}function Tt(h){if(h.type==="ADDITION")return new CSSMathSum(...h.values.map(d=>Tt(d)));if(h.type==="MULTIPLICATION")return new CSSMathProduct(...h.values.map(d=>Tt(d)));if(h.type==="NEGATE")return new CSSMathNegate(Tt(h.value));if(h.type==="INVERT")return new CSSMathInvert(Tt(h.value));if(h instanceof We)return ae(new ke("calc",h.value));if(h instanceof e){if(h.value==="e")return new CSSUnitValue(Math.E,"number");if(h.value==="pi")return new CSSUnitValue(Math.PI,"number");throw new SyntaxError("Invalid math expression")}return Eo(h)}function ae(h){if(h.name==="min"||h.name==="max"){const b=h.values.filter(C=>!(C instanceof f||C instanceof _)).map(C=>ve(ae(new ke("calc",C))));return h.name==="min"?new CSSMathMin(...b):new CSSMathMax(...b)}if(h.name!=="calc")return null;const d=Tt(function(b){const C=[],k=[];for(;b.length;){const z=b.shift();if(z instanceof u||z instanceof m||z instanceof p||z instanceof ke||z instanceof We||z instanceof e)k.push(z);else if(z instanceof l&&["*","/","+","-"].includes(z.value)){for(;C.length&&!(_t(C)instanceof M)&&ee(_t(C))>ee(z);){const D=C.pop(),N=k.pop(),F=k.pop();k.push(Ft(D,F,N))}C.push(z)}else if(z instanceof M)C.push(z);else if(z instanceof E){if(!C.length)return null;for(;!(_t(C)instanceof M);){const D=C.pop(),N=k.pop(),F=k.pop();k.push(Ft(D,F,N))}if(!(_t(C)instanceof M))return null;C.pop()}else if(!(z instanceof f))return null}for(;C.length;){if(_t(C)instanceof M)return null;const z=C.pop(),D=k.pop(),N=k.pop();k.push(Ft(z,N,D))}return k[0]}([...h.values]));let y;try{y=ve(d)}catch{new CSSStyleSheet().insertRule("error",0)}return y instanceof CSSUnitValue?new CSSMathSum(y):y}function Eo(h){return h instanceof ke&&["calc","min","max","clamp"].includes(h.name)?ae(h):h instanceof u&&h.value===0&&!h.unit?new CSSUnitValue(0,"px"):h instanceof u?new CSSUnitValue(h.value,"number"):h instanceof p?new CSSUnitValue(h.value,"percent"):h instanceof m?new CSSUnitValue(h.value,h.unit):void 0}function Tl(h){const d=function(y){const b=st(y);for(;b[0]instanceof f;)b.shift();if(b[0]===void 0)return null;const C=He(b);for(;b[0]instanceof f;)b.shift();return b[0]===void 0?C:null}(h);return d===null&&new CSSStyleSheet().insertRule("error",0),d instanceof u||d instanceof p||d instanceof m||d instanceof ke||new CSSStyleSheet().insertRule("error",0),d instanceof m&&xt(d.unit)===null&&new CSSStyleSheet().insertRule("error",0),Eo(d)}(function(){let h=new WeakMap;function d(k){const z=[];for(let N=0;N<k.length;N++)z[N]=typeof(D=k[N])=="number"?new CSSUnitValue(D,"number"):D;var D;return z}class y{static parse(z){return z instanceof y?z:ve(Tl(z),{})}}class b extends y{constructor(z,D,N,F){super(),h.set(this,{values:d(z),operator:D,name:N||D,delimiter:F||", "})}get operator(){return h.get(this).operator}get values(){return h.get(this).values}toString(){const z=h.get(this);return`${z.name}(${z.values.join(z.delimiter)})`}}const C={CSSNumericValue:y,CSSMathValue:b,CSSUnitValue:class extends y{constructor(k,z){super(),h.set(this,{value:k,unit:z})}get value(){return h.get(this).value}set value(k){h.get(this).value=k}get unit(){return h.get(this).unit}to(k){return wt(this,k)}toSum(...k){return ht(this,...k)}type(){return xt(h.get(this).unit)}toString(){const k=h.get(this);return`${k.value}${function(z){switch(z){case"percent":return"%";case"number":return"";default:return z.toLowerCase()}}(k.unit)}`}},CSSKeywordValue:class{constructor(k){this.value=k}toString(){return this.value.toString()}},CSSMathSum:class extends b{constructor(k){super(arguments,"sum","calc"," + ")}},CSSMathProduct:class extends b{constructor(k){super(arguments,"product","calc"," * ")}toSum(...k){return ht(this,...k)}type(){return h.get(this).values.map(k=>k.type()).reduce(rt)}},CSSMathNegate:class extends b{constructor(k){super([arguments[0]],"negate","-")}get value(){return h.get(this).values[0]}type(){return this.value.type()}},CSSMathInvert:class extends b{constructor(k){super([1,arguments[0]],"invert","calc"," / ")}get value(){return h.get(this).values[1]}type(){return function(k){const z={};for(const D of lt)z[D]=-1*k[D];return z}(h.get(this).values[1].type())}},CSSMathMax:class extends b{constructor(){super(arguments,"max")}},CSSMathMin:class extends b{constructor(){super(arguments,"min")}}};if(!window.CSS&&!Reflect.defineProperty(window,"CSS",{value:{}}))throw Error("Error installing CSSOM support");window.CSSUnitValue||["number","percent","em","ex","px","cm","mm","in","pt","pc","Q","vw","vh","vmin","vmax","rems","ch","deg","rad","grad","turn","ms","s","Hz","kHz","dppx","dpi","dpcm","fr"].forEach(k=>{if(!Reflect.defineProperty(CSS,k,{value:z=>new CSSUnitValue(z,k)}))throw Error(`Error installing CSS.${k}`)});for(let[k,z]of Object.entries(C))if(!(k in window)&&!Reflect.defineProperty(window,k,{value:z}))throw Error(`Error installing CSSOM support for ${k}`)})();const Po="block";let Fe=new WeakMap,Vt=new WeakMap;const er=["entry","exit","cover","contain","entry-crossing","exit-crossing"];function ko(h){return h===document.scrollingElement?document:h}function un(h){is(h);let d=Fe.get(h).animations;if(d.length===0)return;let y=h.currentTime;for(let b=0;b<d.length;b++)d[b].tickAnimation(y)}function Ro(h,d){if(!h)return null;const y=Vt.get(h).sourceMeasurements,b=getComputedStyle(h);let C=y.scrollTop;return Ie(d,b)==="x"&&(C=Math.abs(y.scrollLeft)),C}function ns(h,d){const y=ve(h,d);if(y instanceof CSSUnitValue){if(y.unit==="px")return y.value;throw TypeError("Unhandled unit type "+y.unit)}throw TypeError("Unsupported value type: "+typeof h)}function is(h){if(!(h instanceof Pn))return void function(y){const b=Fe.get(y);if(!b.anonymousSource)return;const C=Oo(b.anonymousSource,b.anonymousTarget);Xn(y,C)}(h);const d=h.subject;if(!d||getComputedStyle(d).display=="none")return void Xn(h,null);Xn(h,ls(d))}function Ao(h){return["block","inline","x","y"].includes(h)}function rs(h){const d=getComputedStyle(h);return{scrollLeft:h.scrollLeft,scrollTop:h.scrollTop,scrollWidth:h.scrollWidth,scrollHeight:h.scrollHeight,clientWidth:h.clientWidth,clientHeight:h.clientHeight,writingMode:d.writingMode,direction:d.direction,scrollPaddingTop:d.scrollPaddingTop,scrollPaddingBottom:d.scrollPaddingBottom,scrollPaddingLeft:d.scrollPaddingLeft,scrollPaddingRight:d.scrollPaddingRight}}function ss(h,d){if(!h||!d)return;let y=0,b=0,C=d;const k=h.offsetParent;for(;C&&C!=k;)b+=C.offsetLeft,y+=C.offsetTop,C=C.offsetParent;b-=h.offsetLeft+h.clientLeft,y-=h.offsetTop+h.clientTop;const z=getComputedStyle(d);return{top:y,left:b,offsetWidth:d.offsetWidth,offsetHeight:d.offsetHeight,fontSize:z.fontSize}}function tr(h){let d=Vt.get(h);d.sourceMeasurements=rs(h);for(const y of d.timelineRefs){const b=y.deref();b instanceof Pn&&(Fe.get(b).subjectMeasurements=ss(h,b.subject))}d.updateScheduled||(setTimeout(()=>{for(const y of d.timelineRefs){const b=y.deref();b&&un(b)}d.updateScheduled=!1}),d.updateScheduled=!0)}function Xn(h,d){const y=Fe.get(h),b=y.source;if(b!=d){if(b){const C=Vt.get(b);if(C){C.timelineRefs.delete(h);const k=Array.from(C.timelineRefs).filter(z=>z.deref()===void 0);for(const z of k)C.timelineRefs.delete(z);C.timelineRefs.size===0&&(C.disconnect(),Vt.delete(b))}}if(y.source=d,d){let C=Vt.get(d);if(!C){C={timelineRefs:new Set,sourceMeasurements:rs(d)},Vt.set(d,C);const k=new ResizeObserver(N=>{for(const F of N)tr(y.source)});k.observe(d);for(const N of d.children)k.observe(N);const z=new MutationObserver(N=>{for(const F of N)tr(F.target)});z.observe(d,{attributes:!0,attributeFilter:["style","class"]});const D=()=>{C.sourceMeasurements.scrollLeft=d.scrollLeft,C.sourceMeasurements.scrollTop=d.scrollTop;for(const N of C.timelineRefs){const F=N.deref();F&&un(F)}};ko(d).addEventListener("scroll",D),C.disconnect=()=>{k.disconnect(),z.disconnect(),ko(d).removeEventListener("scroll",D)}}C.timelineRefs.add(new WeakRef(h))}}}function os(h,d){let y=Fe.get(h).animations;for(let b=0;b<y.length;b++)y[b].animation==d&&y.splice(b,1)}function as(h,d,y){let b=Fe.get(h).animations;for(let C=0;C<b.length;C++)if(b[C].animation==d)return;b.push({animation:d,tickAnimation:y}),queueMicrotask(()=>{un(h)})}class qe{constructor(d){if(Fe.set(this,{source:null,axis:Po,anonymousSource:d?d.anonymousSource:null,anonymousTarget:d?d.anonymousTarget:null,subject:null,inset:null,animations:[],subjectMeasurements:null}),Xn(this,d&&d.source!==void 0?d.source:document.scrollingElement),d&&d.axis!==void 0&&d.axis!=Po){if(!Ao(d.axis))throw TypeError("Invalid axis");Fe.get(this).axis=d.axis}un(this)}set source(d){Xn(this,d),un(this)}get source(){return Fe.get(this).source}set axis(d){if(!Ao(d))throw TypeError("Invalid axis");Fe.get(this).axis=d,un(this)}get axis(){return Fe.get(this).axis}get duration(){return CSS.percent(100)}get phase(){const d=this.source;if(!d)return"inactive";let y=getComputedStyle(d);return y.display=="none"?"inactive":d==document.scrollingElement||y.overflow!="visible"&&y.overflow!="clip"?"active":"inactive"}get currentTime(){const d=this.source;if(!d||!d.isConnected||this.phase=="inactive")return null;const y=getComputedStyle(d);if(y.display==="inline"||y.display==="none")return null;const b=this.axis,C=Ro(d,b),k=function(z,D){const N=Vt.get(z).sourceMeasurements,F=getComputedStyle(z).writingMode=="horizontal-tb";return D==="block"?D=F?"y":"x":D==="inline"&&(D=F?"x":"y"),D==="y"?N.scrollHeight-N.clientHeight:D==="x"?N.scrollWidth-N.clientWidth:void 0}(d,b);return k>0?CSS.percent(100*C/k):CSS.percent(100)}get __polyfill(){return!0}}function cs(h,d){let y=h.parentElement;for(;y!=null;){if(d(y))return y;y=y.parentElement}}function Oo(h,d){switch(h){case"root":return document.scrollingElement;case"nearest":return ls(d);case"self":return d;default:throw new TypeError("Invalid ScrollTimeline Source Type.")}}function Ml(h){switch(getComputedStyle(h).display){case"block":case"inline-block":case"list-item":case"table":case"table-caption":case"flow-root":case"flex":case"grid":return!0}return!1}function Io(h){const d=getComputedStyle(h);return d.transform!="none"||d.perspective!="none"||d.willChange=="transform"||d.willChange=="perspective"||d.filter!="none"||d.willChange=="filter"||d.backdropFilter!="none"}function Cl(h){return getComputedStyle(h).position!="static"||Io(h)}function El(h){switch(getComputedStyle(h).position){case"static":case"relative":case"sticky":return cs(h,Ml);case"absolute":return cs(h,Cl);case"fixed":return cs(h,Io)}}function ls(h){if(h&&h.isConnected){for(;h=El(h);)switch(getComputedStyle(h)["overflow-x"]){case"auto":case"scroll":case"hidden":return h==document.body&&getComputedStyle(document.scrollingElement).overflow=="visible"?document.scrollingElement:h}return document.scrollingElement}}function Yn(h,d){const y=Fe.get(h),b=y.subjectMeasurements,C=Vt.get(y.source).sourceMeasurements;return h.phase==="inactive"?null:h instanceof Pn?us(d,C,b,y.axis,y.inset):null}function us(h,d,y,b,C){const k=d.direction=="rtl"||d.writingMode=="vertical-rl";let z,D,N={fontSize:y.fontSize};Ie(b,d)==="x"?(z=y.offsetWidth,D=y.left,N.scrollPadding=[d.scrollPaddingLeft,d.scrollPaddingRight],k&&(D+=d.scrollWidth-d.clientWidth,N.scrollPadding=[d.scrollPaddingRight,d.scrollPaddingLeft]),N.containerSize=d.clientWidth):(z=y.offsetHeight,D=y.top,N.scrollPadding=[d.scrollPaddingTop,d.scrollPaddingBottom],N.containerSize=d.clientHeight);const F=function(fs,or){const Ll={start:0,end:0};if(!fs)return Ll;const[Fl,Vl]=[fs.start,fs.end].map((Xo,Yo)=>Xo==="auto"?or.scrollPadding[Yo]==="auto"?0:parseFloat(or.scrollPadding[Yo]):ns(Xo,{percentageReference:CSS.px(or.containerSize),fontSize:CSS.px(parseFloat(or.fontSize))}));return{start:Fl,end:Vl}}(C,N),X=D-N.containerSize+F.end,Z=D+z-F.start,K=X+z,me=Z-z,_e=Math.min(K,me),$e=Math.max(K,me);let Mt,dt;const qo=z>N.containerSize-F.start-F.end;switch(h){case"cover":Mt=X,dt=Z;break;case"contain":Mt=_e,dt=$e;break;case"entry":Mt=X,dt=_e;break;case"exit":Mt=$e,dt=Z;break;case"entry-crossing":Mt=X,dt=qo?$e:_e;break;case"exit-crossing":Mt=qo?_e:$e,dt=Z}return{start:Mt,end:dt}}function zo(h,d){if(h instanceof Pn){const{rangeName:y,offset:b}=d;return Bo(Yn(h,y),b,Yn(h,"cover"),h.subject)}if(h instanceof qe){const{axis:y,source:b}=h,{sourceMeasurements:C}=Vt.get(b);let k;return k=Ie(y,C)==="x"?C.scrollWidth-C.clientWidth:C.scrollHeight-C.clientHeight,ns(d,{percentageReference:CSS.px(k)})/k}unsupportedTimeline(h)}function Bo(h,d,y,b){if(!h||!y)return 0;let C=getComputedStyle(b);return(ns(d,{percentageReference:CSS.px(h.end-h.start),fontSize:CSS.px(parseFloat(C.fontSize))})+h.start-y.start)/(y.end-y.start)}let Pn=class extends qe{constructor(h){super(h);const d=Fe.get(this);d.subject=h&&h.subject?h.subject:void 0,h&&h.inset&&(d.inset=function(y){if(!y)return{start:0,end:0};let b;if(b=typeof y=="string"?Ee(y).map(C=>{if(C==="auto")return"auto";try{return CSSNumericValue.parse(C)}catch{throw TypeError(`Could not parse inset "${y}"`)}}):Array.isArray(y)?y:[y],b.length===0||b.length>2)throw TypeError("Invalid inset");for(const C of b){if(C==="auto")continue;const k=C.type();if(k.length!==1&&k.percent!==1)throw TypeError("Invalid inset")}return{start:b[0],end:b[1]??b[0]}}(h.inset)),d.subject&&(new ResizeObserver(()=>{tr(d.source)}).observe(d.subject),new MutationObserver(()=>{tr(d.source)}).observe(d.subject,{attributes:!0,attributeFilter:["class","style"]})),is(this),d.subjectMeasurements=ss(d.source,d.subject),un(this)}get source(){return is(this),Fe.get(this).source}set source(h){throw new Error("Cannot set the source of a view timeline")}get subject(){return Fe.get(this).subject}get axis(){return Fe.get(this).axis}get currentTime(){const h=Ro(this.source,this.axis);if(h==null)return null;const d=Yn(this,"cover");if(!d)return null;const y=(h-d.start)/(d.end-d.start);return CSS.percent(100*y)}get startOffset(){return CSS.px(Yn(this,"cover").start)}get endOffset(){return CSS.px(Yn(this,"cover").end)}};const Pl=document.getAnimations,kl=window.Element.prototype.getAnimations,Rl=window.Element.prototype.animate,No=window.Animation;class kn{constructor(){this.state="pending",this.nativeResolve=this.nativeReject=null,this.promise=new Promise((d,y)=>{this.nativeResolve=d,this.nativeReject=y})}resolve(d){this.state="resolved",this.nativeResolve(d)}reject(d){this.state="rejected",this.promise.catch(()=>{}),this.nativeReject(d)}}function Zn(h){h.readyPromise=new kn,requestAnimationFrame(()=>{var d;(((d=h.timeline)==null?void 0:d.currentTime)??null)!==null&&(nr(h),h.pendingTask!=="play"||h.startTime===null&&h.holdTime===null?h.pendingTask==="pause"&&Lo(h):Do(h))})}function Uo(){return new DOMException("The user aborted a request","AbortError")}function hn(h,d){if(d===null)return d;if(typeof d!="number")throw new DOMException(`Unexpected value: ${d}. Cannot convert to CssNumberish`,"InvalidStateError");const y=h.rangeDuration??100,b=Jt(h),C=b?y*d/b:0;return CSS.percent(C)}function Se(h,d){if(h.timeline){if(d===null)return d;if(d.unit==="percent"){const y=h.rangeDuration??100,b=Jt(h);return d.value*b/y}throw new DOMException("CSSNumericValue must be a percentage for progress based animations.","NotSupportedError")}{if(d==null||typeof d=="number")return d;const y=d.to("ms");if(y)return y.value;throw new DOMException("CSSNumericValue must be either a number or a time value for time based animations.","InvalidStateError")}}function Do(h){const d=Se(h,h.timeline.currentTime);if(h.holdTime!=null)Ot(h),h.animation.playbackRate==0?h.startTime=d:(h.startTime=d-h.holdTime/h.animation.playbackRate,h.holdTime=null);else if(h.startTime!==null&&h.pendingPlaybackRate!==null){const y=(d-h.startTime)*h.animation.playbackRate;Ot(h);const b=h.animation.playbackRate;b==0?(h.holdTime=null,h.startTime=d):h.startTime=d-y/b}h.readyPromise&&h.readyPromise.state=="pending"&&h.readyPromise.resolve(h.proxy),jt(h,!1,!1),Gt(h),h.pendingTask=null}function Lo(h){const d=Se(h,h.timeline.currentTime);h.startTime!=null&&h.holdTime==null&&(h.holdTime=(d-h.startTime)*h.animation.playbackRate),Ot(h),h.startTime=null,h.readyPromise.resolve(h.proxy),jt(h,!1,!1),Gt(h),h.pendingTask=null}function Fo(h){if(!h.finishedPromise||h.finishedPromise.state!="pending"||h.proxy.playState!="finished")return;h.finishedPromise.resolve(h.proxy),h.animation.pause();const d=new CustomEvent("finish",{detail:{currentTime:h.proxy.currentTime,timelineTime:h.proxy.timeline.currentTime}});Object.defineProperty(d,"currentTime",{get:function(){return this.detail.currentTime}}),Object.defineProperty(d,"timelineTime",{get:function(){return this.detail.timelineTime}}),requestAnimationFrame(()=>{queueMicrotask(()=>{h.animation.dispatchEvent(d)})})}function Rn(h){return h.pendingPlaybackRate!==null?h.pendingPlaybackRate:h.animation.playbackRate}function Ot(h){h.pendingPlaybackRate!==null&&(h.animation.playbackRate=h.pendingPlaybackRate,h.pendingPlaybackRate=null)}function Vo(h){if(!h.timeline)return null;const d=Se(h,h.timeline.currentTime);if(d===null||h.startTime===null)return null;let y=(d-h.startTime)*h.animation.playbackRate;return y==-0&&(y=0),y}function jt(h,d,y){if(!h.timeline)return;let b=d?Se(h,h.proxy.currentTime):Vo(h);if(b&&h.startTime!=null&&!h.proxy.pending){const C=Rn(h),k=Jt(h);let z=h.previousCurrentTime;C>0&&b>=k&&h.previousCurrentTime!=null?((z===null||z<k)&&(z=k),h.holdTime=d?b:z):C<0&&b<=0?((z==null||z>0)&&(z=0),h.holdTime=d?b:z):C!=0&&(d&&h.holdTime!==null&&(h.startTime=function(D,N){if(!D.timeline)return null;const F=Se(D,D.timeline.currentTime);return F==null?null:F-N/D.animation.playbackRate}(h,h.holdTime)),h.holdTime=null)}Gt(h),h.previousCurrentTime=Se(h,h.proxy.currentTime),h.proxy.playState=="finished"?(h.finishedPromise||(h.finishedPromise=new kn),h.finishedPromise.state=="pending"&&(y?Fo(h):Promise.resolve().then(()=>{Fo(h)}))):(h.finishedPromise&&h.finishedPromise.state=="resolved"&&(h.finishedPromise=new kn),h.animation.playState!="paused"&&h.animation.pause())}function Jt(h){const d=function(b){const C=b.proxy.effect.getTiming();return b.normalizedTiming||C}(h),y=d.delay+d.endDelay+d.iterations*d.duration;return Math.max(0,y)}function Gt(h){if(h.timeline)if(h.startTime!==null){const d=h.timeline.currentTime;if(d==null)return;hs(h,(Se(h,d)-h.startTime)*h.animation.playbackRate)}else h.holdTime!==null&&hs(h,h.holdTime)}function hs(h,d){const y=h.timeline,b=h.animation.playbackRate,C=y.currentTime&&y.currentTime.value==(b<0?0:100)?b<0?.001:-.001:0;h.animation.currentTime=d+C}function ds(h,d){if(!h.timeline)return;const y=h.proxy.playState=="paused"&&h.proxy.pending;let b=!1,C=Se(h,h.proxy.currentTime);Rn(h)==0&&C==null&&(h.holdTime=0),C==null&&(h.autoAlignStartTime=!0),(h.proxy.playState==="finished"||y)&&(h.holdTime=null,h.startTime=null,h.autoAlignStartTime=!0),h.holdTime&&(h.startTime=null),h.pendingTask&&(h.pendingTask=null,b=!0),(h.holdTime!==null||h.autoAlignStartTime||y||h.pendingPlaybackRate!==null)&&(h.readyPromise&&!b&&(h.readyPromise=null),Gt(h),h.readyPromise||Zn(h),h.pendingTask="play",as(h.timeline,h.animation,ps.bind(h.proxy)),jt(h,!1,!1))}function ps(h){const d=Y.get(this);if(!d)return;if(h==null)return void(d.proxy.playState!=="paused"&&d.animation.playState!="idle"&&d.animation.cancel());nr(d),d.pendingTask&&requestAnimationFrame(()=>{d.pendingTask!=="play"||d.startTime===null&&d.holdTime===null?d.pendingTask==="pause"&&Lo(d):Do(d)});const y=this.playState;if(y=="running"||y=="finished"){const b=Se(d,h);hs(d,(b-Se(d,this.startTime))*this.playbackRate),jt(d,!1,!1)}}function jo(h){h.specifiedTiming=null}let Y=new WeakMap;window.addEventListener("pagehide",h=>{Y=new WeakMap},!1);let Jo=new WeakMap;function nr(h){if(!h.autoAlignStartTime||!h.timeline||!h.timeline.currentTime||h.proxy.playState==="idle"||h.proxy.playState==="paused"&&h.holdTime!==null)return;const d=h.rangeDuration;let y,b;try{y=CSS.percent(100*function(k){if(!k.animationRange)return 0;const z=k.animationRange.start==="normal"?Go(k.timeline):k.animationRange.start;return zo(k.timeline,z)}(h))}catch(k){y=CSS.percent(0),h.animationRange.start="normal",console.warn("Exception when calculating start offset",k)}try{b=CSS.percent(100*(1-function(k){if(!k.animationRange)return 0;const z=k.animationRange.end==="normal"?Wo(k.timeline):k.animationRange.end;return 1-zo(k.timeline,z)}(h)))}catch(k){b=CSS.percent(100),h.animationRange.end="normal",console.warn("Exception when calculating end offset",k)}h.rangeDuration=b.value-y.value;const C=Rn(h);h.startTime=Se(h,C>=0?y:b),h.holdTime=null,h.rangeDuration!==d&&jo(h)}function ir(h){throw new Error("Unsupported timeline class")}function Go(h){return h instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(0)}:h instanceof qe?CSS.percent(0):void ir()}function Wo(h){return h instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(100)}:h instanceof qe?CSS.percent(100):void ir()}function Al(h,d){if(!d)return{start:"normal",end:"normal"};const y={start:Go(h),end:Wo(h)};if(h instanceof ViewTimeline){const b=Ee(d),C=[],k=[];if(b.forEach(z=>{if(er.includes(z))C.push(z);else try{k.push(CSSNumericValue.parse(z))}catch{throw TypeError(`Could not parse range "${d}"`)}}),C.length>2||k.length>2||k.length==1)throw TypeError("Invalid time range or unsupported time range format.");return C.length&&(y.start.rangeName=C[0],y.end.rangeName=C.length>1?C[1]:C[0]),k.length>1&&(y.start.offset=k[0],y.end.offset=k[1]),y}if(h instanceof qe){const b=d.split(" ");if(b.length!=2)throw TypeError("Invalid time range or unsupported time range format.");return y.start=CSSNumericValue.parse(b[0]),y.end=CSSNumericValue.parse(b[1]),y}ir()}function rr(h,d,y){if(!d||d==="normal")return"normal";if(h instanceof ViewTimeline){let b="cover",C=y==="start"?CSS.percent(0):CSS.percent(100);if(d instanceof Object)d.rangeName!==void 0&&(b=d.rangeName),d.offset!==void 0&&(C=d.offset);else{const k=Ee(d);k.length===1?er.includes(k[0])?b=k[0]:C=ve(CSSNumericValue.parse(k[0]),{}):k.length===2&&(b=k[0],C=ve(CSSNumericValue.parse(k[1]),{}))}if(!er.includes(b))throw TypeError("Invalid range name");return{rangeName:b,offset:C}}if(h instanceof qe)return CSSNumericValue.parse(d);ir()}class sr{constructor(d,y,b={}){const C=y instanceof qe,k=d instanceof No?d:new No(d,C?void 0:y);Jo.set(k,this),Y.set(this,{animation:k,timeline:C?y:void 0,playState:C?"idle":null,readyPromise:null,finishedPromise:null,startTime:null,holdTime:null,rangeDuration:null,previousCurrentTime:null,autoAlignStartTime:!1,pendingPlaybackRate:null,pendingTask:null,specifiedTiming:null,normalizedTiming:null,effect:null,animationRange:C?Al(y,b["animation-range"]):null,proxy:this})}get effect(){const d=Y.get(this);return d.timeline?(d.effect||(d.effect=function(y){const b=y.animation.effect,C=b.updateTiming,k={apply:function(F){b.getTiming();const X=F.apply(b);if(y.timeline){const Z=y.duration??100;X.localTime=hn(y,X.localTime),X.endTime=hn(y,X.endTime),X.activeDuration=hn(y,X.activeDuration);const K=Jt(y),me=X.iterations?(K-X.delay-X.endDelay)/X.iterations:0;X.duration=K?CSS.percent(Z*me/K):CSS.percent(0),y.timeline.currentTime===void 0&&(X.localTime=null)}return X}},z={apply:function(F,X){if(y.specifiedTiming)return y.specifiedTiming;y.specifiedTiming=F.apply(b);let Z,K=Object.assign({},y.specifiedTiming);if(K.duration===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");return(K.duration===null||K.duration==="auto"||y.autoDurationEffect)&&y.timeline&&(y.autoDurationEffect=!0,K.delay=0,K.endDelay=0,Z=K.iterations?1e5:0,K.duration=K.iterations?(Z-K.delay-K.endDelay)/K.iterations:0,K.duration<0&&(K.duration=0,K.endDelay=Z-K.delay),C.apply(b,[K])),y.normalizedTiming=K,y.specifiedTiming}},D={apply:function(F,X,Z){if(Z&&Z.length){if(y.timeline&&Z[0]){const K=Z[0],me=K.duration;if(me===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");if(K.iterations===1/0)throw TypeError("Effect iterations cannot be Infinity when used with Scroll Timelines");me!==void 0&&me!=="auto"&&(y.autoDurationEffect=null)}y.specifiedTiming&&F.apply(b,[y.specifiedTiming]),F.apply(b,Z),jo(y)}}},N=new Proxy(b,{get:function(F,X){const Z=F[X];return typeof Z=="function"?Z.bind(b):Z},set:function(F,X,Z){return F[X]=Z,!0}});return N.getComputedTiming=new Proxy(b.getComputedTiming,k),N.getTiming=new Proxy(b.getTiming,z),N.updateTiming=new Proxy(b.updateTiming,D),N}(d)),d.effect):d.animation.effect}set effect(d){const y=Y.get(this);y.animation.effect=d,y.effect=null,y.autoDurationEffect=null}get timeline(){const d=Y.get(this);return d.timeline||d.animation.timeline}set timeline(d){const y=Y.get(this),b=this.timeline;if(b==d)return;const C=this.playState,k=this.currentTime;let z,D=Jt(y);z=k===null?null:D===0?0:Se(y,k)/D;const N=b instanceof qe,F=d instanceof qe,X=this.pending;if(N&&os(y.timeline,y.animation),F)return y.timeline=d,Ot(y),y.autoAlignStartTime=!0,y.startTime=null,y.holdTime=null,C!=="running"&&C!=="finished"||(y.readyPromise&&y.readyPromise.state!=="resolved"||Zn(y),y.pendingTask="play",as(y.timeline,y.animation,ps.bind(this))),C==="paused"&&z!==null&&(y.holdTime=z*D),X&&(y.readyPromise&&y.readyPromise.state!="resolved"||Zn(y),y.pendingTask=C=="paused"?"pause":"play"),y.startTime!==null&&(y.holdTime=null),void jt(y,!1,!1);if(y.animation.timeline!=d)throw TypeError("Unsupported timeline: "+d);if(os(y.timeline,y.animation),y.timeline=null,N)switch(k!==null&&(y.animation.currentTime=z*Jt(y)),C){case"paused":y.animation.pause();break;case"running":case"finished":y.animation.play()}}get startTime(){const d=Y.get(this);return d.timeline?hn(d,d.startTime):d.animation.startTime}set startTime(d){const y=Y.get(this);if(d=Se(y,d),!y.timeline)return void(y.animation.startTime=d);y.autoAlignStartTime=!1,Se(y,y.timeline.currentTime)==null&&y.startTime!=null&&(y.holdTime=null,Gt(y));const b=Se(y,this.currentTime);Ot(y),y.startTime=d,y.startTime!==null&&y.animation.playbackRate!=0?y.holdTime=null:y.holdTime=b,y.pendingTask&&(y.pendingTask=null,y.readyPromise.resolve(this)),jt(y,!0,!1),Gt(y)}get currentTime(){const d=Y.get(this);return d.timeline?d.holdTime!=null?hn(d,d.holdTime):hn(d,Vo(d)):d.animation.currentTime}set currentTime(d){const y=Y.get(this);y.timeline?(function(b,C){if(C==null&&b.currentTime!==null)throw new TypeError;C=Se(b,C),b.autoAlignStartTime=!1,b.holdTime!==null||b.startTime===null||b.timeline.phase==="inactive"||b.animation.playbackRate===0?b.holdTime=C:b.startTime=Se(b,b.timeline.currentTime)-C/b.animation.playbackRate,b.timeline.phase==="inactive"&&(b.startTime=null),b.previousCurrentTime=null}(y,d),y.pendingTask=="pause"&&(y.holdTime=Se(y,d),Ot(y),y.startTime=null,y.pendingTask=null,y.readyPromise.resolve(this)),jt(y,!0,!1)):y.animation.currentTime=d}get playbackRate(){return Y.get(this).animation.playbackRate}set playbackRate(d){const y=Y.get(this);if(!y.timeline)return void(y.animation.playbackRate=d);y.pendingPlaybackRate=null;const b=this.currentTime;y.animation.playbackRate=d,b!==null&&(this.currentTime=b)}get playState(){const d=Y.get(this);if(!d.timeline)return d.animation.playState;const y=Se(d,this.currentTime);return y===null&&d.startTime===null&&d.pendingTask==null?"idle":d.pendingTask=="pause"||d.startTime===null&&d.pendingTask!="play"?"paused":y!=null&&(d.animation.playbackRate>0&&y>=Jt(d)||d.animation.playbackRate<0&&y<=0)?"finished":"running"}get rangeStart(){var d;return((d=Y.get(this).animationRange)==null?void 0:d.start)??"normal"}set rangeStart(d){const y=Y.get(this);if(!y.timeline)return y.animation.rangeStart=d;y.timeline instanceof qe&&(y.animationRange.start=rr(y.timeline,d,"start"),nr(y),Gt(y))}get rangeEnd(){var d;return((d=Y.get(this).animationRange)==null?void 0:d.end)??"normal"}set rangeEnd(d){const y=Y.get(this);if(!y.timeline)return y.animation.rangeEnd=d;y.timeline instanceof qe&&(y.animationRange.end=rr(y.timeline,d,"end"),nr(y),Gt(y))}get replaceState(){return Y.get(this).animation.pending}get pending(){const d=Y.get(this);return d.timeline?!!d.readyPromise&&d.readyPromise.state=="pending":d.animation.pending}finish(){const d=Y.get(this);if(!d.timeline)return void d.animation.finish();const y=Rn(d),b=Jt(d);if(y==0)throw new DOMException("Cannot finish Animation with a playbackRate of 0.","InvalidStateError");if(y>0&&b==1/0)throw new DOMException("Cannot finish Animation with an infinite target effect end.","InvalidStateError");Ot(d);const C=y<0?0:b;this.currentTime=hn(d,C);const k=Se(d,d.timeline.currentTime);d.startTime===null&&k!==null&&(d.startTime=k-C/d.animation.playbackRate),d.pendingTask=="pause"&&d.startTime!==null&&(d.holdTime=null,d.pendingTask=null,d.readyPromise.resolve(this)),d.pendingTask=="play"&&d.startTime!==null&&(d.pendingTask=null,d.readyPromise.resolve(this)),jt(d,!0,!0)}play(){const d=Y.get(this);d.timeline?ds(d):d.animation.play()}pause(){const d=Y.get(this);d.timeline?this.playState!="paused"&&(d.animation.currentTime===null&&(d.autoAlignStartTime=!0),d.pendingTask=="play"?d.pendingTask=null:d.readyPromise=null,d.readyPromise||Zn(d),d.pendingTask="pause",as(d.timeline,d.animation,ps.bind(d.proxy))):d.animation.pause()}reverse(){const d=Y.get(this),y=Rn(d),b=Se(d,this.currentTime),C=Jt(d)==1/0,k=y!=0&&(y<0||b>0||!C);if(!d.timeline||!k)return k&&(d.pendingPlaybackRate=-Rn(d)),void d.animation.reverse();if(d.timeline.phase=="inactive")throw new DOMException("Cannot reverse an animation with no active timeline","InvalidStateError");this.updatePlaybackRate(-y),ds(d)}updatePlaybackRate(d){const y=Y.get(this);if(y.pendingPlaybackRate=d,!y.timeline)return void y.animation.updatePlaybackRate(d);const b=this.playState;if(!y.readyPromise||y.readyPromise.state!="pending")switch(b){case"idle":case"paused":Ot(y);break;case"finished":const C=Se(y,y.timeline.currentTime),k=C!==null?(C-y.startTime)*y.animation.playbackRate:null;y.startTime=d==0?C:C!=null&&k!=null?(C-k)/d:null,Ot(y),jt(y,!1,!1),Gt(y);break;default:ds(y)}}persist(){Y.get(this).animation.persist()}get id(){return Y.get(this).animation.id}set id(d){Y.get(this).animation.id=d}cancel(){const d=Y.get(this);d.timeline?(this.playState!="idle"&&(function(y){y.pendingTask&&(y.pendingTask=null,Ot(y),y.readyPromise.reject(Uo()),Zn(y),y.readyPromise.resolve(y.proxy))}(d),d.finishedPromise&&d.finishedPromise.state=="pending"&&d.finishedPromise.reject(Uo()),d.finishedPromise=new kn,d.animation.cancel()),d.startTime=null,d.holdTime=null,os(d.timeline,d.animation)):d.animation.cancel()}get onfinish(){return Y.get(this).animation.onfinish}set onfinish(d){Y.get(this).animation.onfinish=d}get oncancel(){return Y.get(this).animation.oncancel}set oncancel(d){Y.get(this).animation.oncancel=d}get onremove(){return Y.get(this).animation.onremove}set onremove(d){Y.get(this).animation.onremove=d}get finished(){const d=Y.get(this);return d.timeline?(d.finishedPromise||(d.finishedPromise=new kn),d.finishedPromise.promise):d.animation.finished}get ready(){const d=Y.get(this);return d.timeline?(d.readyPromise||(d.readyPromise=new kn,d.readyPromise.resolve(this)),d.readyPromise.promise):d.animation.ready}addEventListener(d,y,b){Y.get(this).animation.addEventListener(d,y,b)}removeEventListener(d,y,b){Y.get(this).animation.removeEventListener(d,y,b)}dispatchEvent(d){Y.get(this).animation.dispatchEvent(d)}}function Ol(h,d){const y=d.timeline;y instanceof qe&&delete d.timeline;const b=Rl.apply(this,[h,d]),C=new sr(b,y);return y instanceof qe&&(b.pause(),Y.get(C).animationRange={start:rr(y,d.rangeStart,"start"),end:rr(y,d.rangeEnd,"end")},C.play()),C}function Ho(h){for(let d=0;d<h.length;++d){let y=Jo.get(h[d]);y&&(h[d]=y)}return h}function Il(h){return Ho(kl.apply(this,[h]))}function zl(h){return Ho(Pl.apply(this,[h]))}const Re={IDENTIFIER:/[\w\\\@_-]+/g,WHITE_SPACE:/\s*/g,TIME:/^[0-9]+(s|ms)/,SCROLL_TIMELINE:/scroll-timeline\s*:([^;}]+)/,SCROLL_TIMELINE_NAME:/scroll-timeline-name\s*:([^;}]+)/,SCROLL_TIMELINE_AXIS:/scroll-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE:/view-timeline\s*:([^;}]+)/,VIEW_TIMELINE_NAME:/view-timeline-name\s*:([^;}]+)/,VIEW_TIMELINE_AXIS:/view-timeline-axis\s*:([^;}]+)/,VIEW_TIMELINE_INSET:/view-timeline-inset\s*:([^;}]+)/,ANIMATION_TIMELINE:/animation-timeline\s*:([^;}]+)/,ANIMATION_TIME_RANGE:/animation-range\s*:([^;}]+)/,ANIMATION_NAME:/animation-name\s*:([^;}]+)/,ANIMATION:/animation\s*:([^;}]+)/,ANONYMOUS_SCROLL_TIMELINE:/scroll\(([^)]*)\)/,ANONYMOUS_VIEW_TIMELINE:/view\(([^)]*)\)/},An=["block","inline","x","y"],Bl=["nearest","root","self"],$t=new class{constructor(){this.cssRulesWithTimelineName=[],this.nextAnonymousTimelineNameIndex=0,this.anonymousScrollTimelineOptions=new Map,this.anonymousViewTimelineOptions=new Map,this.sourceSelectorToScrollTimeline=[],this.subjectSelectorToViewTimeline=[],this.keyframeNamesSelectors=new Map}transpileStyleSheet(h,d,y){const b={sheetSrc:h,index:0,name:y};for(;b.index<b.sheetSrc.length&&(this.eatWhitespace(b),!(b.index>=b.sheetSrc.length));){if(this.lookAhead("/*",b)){for(;this.lookAhead("/*",b);)this.eatComment(b),this.eatWhitespace(b);continue}const C=this.parseQualifiedRule(b);C&&(d?this.parseKeyframesAndSaveNameMapping(C,b):this.handleScrollTimelineProps(C,b))}return b.sheetSrc}getAnimationTimelineOptions(h,d){for(let y=this.cssRulesWithTimelineName.length-1;y>=0;y--){const b=this.cssRulesWithTimelineName[y];try{if(d.matches(b.selector)&&(!b["animation-name"]||b["animation-name"]==h))return{"animation-timeline":b["animation-timeline"],"animation-range":b["animation-range"]}}catch{}}return null}getAnonymousScrollTimelineOptions(h,d){const y=this.anonymousScrollTimelineOptions.get(h);return y?{anonymousSource:y.source,anonymousTarget:d,source:Oo(y.source??"nearest",d),axis:y.axis?y.axis:"block"}:null}getScrollTimelineOptions(h,d){const y=this.getAnonymousScrollTimelineOptions(h,d);if(y)return y;for(let b=this.sourceSelectorToScrollTimeline.length-1;b>=0;b--){const C=this.sourceSelectorToScrollTimeline[b];if(C.name==h){const k=this.findPreviousSiblingOrAncestorMatchingSelector(d,C.selector);if(k)return{source:k,...C.axis?{axis:C.axis}:{}}}}return null}findPreviousSiblingOrAncestorMatchingSelector(h,d){let y=h;for(;y;){if(y.matches(d))return y;y=y.previousElementSibling||y.parentElement}return null}getAnonymousViewTimelineOptions(h,d){const y=this.anonymousViewTimelineOptions.get(h);return y?{subject:d,axis:y.axis?y.axis:"block",inset:y.inset?y.inset:"auto"}:null}getViewTimelineOptions(h,d){const y=this.getAnonymousViewTimelineOptions(h,d);if(y)return y;for(let b=this.subjectSelectorToViewTimeline.length-1;b>=0;b--){const C=this.subjectSelectorToViewTimeline[b];if(C.name==h){const k=this.findPreviousSiblingOrAncestorMatchingSelector(d,C.selector);if(k)return{subject:k,axis:C.axis,inset:C.inset}}}return null}handleScrollTimelineProps(h,d){if(h.selector.includes("@keyframes"))return;const y=h.block.contents.includes("animation-name:"),b=h.block.contents.includes("animation-timeline:"),C=h.block.contents.includes("animation:");if(this.saveSourceSelectorToScrollTimeline(h),this.saveSubjectSelectorToViewTimeline(h),!b&&!y&&!C)return;let k=[],z=[],D=!1;b&&(k=this.extractScrollTimelineNames(h.block.contents)),y&&(z=this.extractMatches(h.block.contents,Re.ANIMATION_NAME)),b&&y||(C&&this.extractMatches(h.block.contents,Re.ANIMATION).forEach(N=>{const F=this.extractAnimationName(N);F&&b&&z.push(F),b&&(this.hasDuration(N)||(this.hasAutoDuration(N)&&(h.block.contents=h.block.contents.replace("auto"," ")),h.block.contents=h.block.contents.replace(N," 1s "+N),D=!0))}),D&&this.replacePart(h.block.startIndex,h.block.endIndex,h.block.contents,d)),this.saveRelationInList(h,k,z)}saveSourceSelectorToScrollTimeline(h){const d=h.block.contents.includes("scroll-timeline:"),y=h.block.contents.includes("scroll-timeline-name:"),b=h.block.contents.includes("scroll-timeline-axis:");if(!d&&!y)return;let C=[];if(d){const z=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE);for(const D of z){const N=this.split(D);let F={selector:h.selector,name:""};N.length==1?F.name=N[0]:N.length==2&&(An.includes(N[0])?(F.axis=N[0],F.name=N[1]):(F.axis=N[1],F.name=N[0])),C.push(F)}}if(y){const z=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE_NAME);for(let D=0;D<z.length;D++)if(D<C.length)C[D].name=z[D];else{let N={selector:h.selector,name:z[D]};C.push(N)}}let k=[];if(b){const z=this.extractMatches(h.block.contents,Re.SCROLL_TIMELINE_AXIS);if(k=z.filter(D=>An.includes(D)),k.length!=z.length)throw new Error("Invalid axis")}for(let z=0;z<C.length;z++)k.length&&(C[z].axis=k[z%C.length]);this.sourceSelectorToScrollTimeline.push(...C)}saveSubjectSelectorToViewTimeline(h){const d=h.block.contents.includes("view-timeline:"),y=h.block.contents.includes("view-timeline-name:"),b=h.block.contents.includes("view-timeline-axis:"),C=h.block.contents.includes("view-timeline-inset:");if(!d&&!y)return;let k=[];if(d){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE);for(let F of N){const X=this.split(F);let Z={selector:h.selector,name:"",inset:null};X.length==1?Z.name=X[0]:X.length==2&&(An.includes(X[0])?(Z.axis=X[0],Z.name=X[1]):(Z.axis=X[1],Z.name=X[0])),k.push(Z)}}if(y){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_NAME);for(let F=0;F<N.length;F++)if(F<k.length)k[F].name=N[F];else{let X={selector:h.selector,name:N[F],inset:null};k.push(X)}}let z=[],D=[];if(C&&(z=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_INSET)),b){const N=this.extractMatches(h.block.contents,Re.VIEW_TIMELINE_AXIS);if(D=N.filter(F=>An.includes(F)),D.length!=N.length)throw new Error("Invalid axis")}for(let N=0;N<k.length;N++)z.length&&(k[N].inset=z[N%k.length]),D.length&&(k[N].axis=D[N%k.length]);this.subjectSelectorToViewTimeline.push(...k)}hasDuration(h){return h.split(" ").filter(d=>{return y=d,Re.TIME.exec(y);var y}).length>=1}hasAutoDuration(h){return h.split(" ").filter(d=>d==="auto").length>=1}saveRelationInList(h,d,y){let b=[];h.block.contents.includes("animation-range:")&&(b=this.extractMatches(h.block.contents,Re.ANIMATION_TIME_RANGE));const C=Math.max(d.length,y.length,b.length);for(let k=0;k<C;k++)this.cssRulesWithTimelineName.push({selector:h.selector,"animation-timeline":d[k%d.length],...y.length?{"animation-name":y[k%y.length]}:{},...b.length?{"animation-range":b[k%b.length]}:{}})}extractScrollTimelineNames(h){const d=Re.ANIMATION_TIMELINE.exec(h)[1].trim(),y=[];return d.split(",").map(b=>b.trim()).forEach(b=>{if(function(C){return(C.startsWith("scroll")||C.startsWith("view"))&&C.includes("(")}(b)){const C=this.saveAnonymousTimelineName(b);y.push(C)}else y.push(b)}),y}saveAnonymousTimelineName(h){const d=":t"+this.nextAnonymousTimelineNameIndex++;return h.startsWith("scroll(")?this.anonymousScrollTimelineOptions.set(d,this.parseAnonymousScrollTimeline(h)):this.anonymousViewTimelineOptions.set(d,this.parseAnonymousViewTimeline(h)),d}parseAnonymousScrollTimeline(h){const d=Re.ANONYMOUS_SCROLL_TIMELINE.exec(h);if(!d)return null;const y=d[1],b={};return y.split(" ").forEach(C=>{An.includes(C)?b.axis=C:Bl.includes(C)&&(b.source=C)}),b}parseAnonymousViewTimeline(h){const d=Re.ANONYMOUS_VIEW_TIMELINE.exec(h);if(!d)return null;const y=d[1],b={};return y.split(" ").forEach(C=>{An.includes(C)?b.axis=C:b.inset=b.inset?`${b.inset} ${C}`:C}),b}extractAnimationName(h){return this.findMatchingEntryInContainer(h,this.keyframeNamesSelectors)}findMatchingEntryInContainer(h,d){const y=h.split(" ").filter(b=>d.has(b));return y?y[0]:null}parseIdentifier(h){Re.IDENTIFIER.lastIndex=h.index;const d=Re.IDENTIFIER.exec(h.sheetSrc);if(!d)throw this.parseError(h,"Expected an identifier");return h.index+=d[0].length,d[0]}parseKeyframesAndSaveNameMapping(h,d){if(h.selector.startsWith("@keyframes")){const y=this.replaceKeyframesAndGetMapping(h,d);h.selector.split(" ").forEach((b,C)=>{C>0&&this.keyframeNamesSelectors.set(b,y)})}}replaceKeyframesAndGetMapping(h,d){function y(N){return er.some(F=>N.startsWith(F))}const b=h.block.contents,C=function(N){let F=0,X=-1,Z=-1;const K=[];for(let me=0;me<N.length;me++)N[me]=="{"?F++:N[me]=="}"&&F--,F==1&&N[me]!="{"&&N[me]!="}"&&X==-1&&(X=me),F==2&&N[me]=="{"&&(Z=me,K.push({start:X,end:Z}),X=Z=-1);return K}(b);if(C.length==0)return new Map;const k=new Map;let z=!1;const D=[];D.push(b.substring(0,C[0].start));for(let N=0;N<C.length;N++){const F=b.substring(C[N].start,C[N].end);let X=[];F.split(",").forEach(Z=>{const K=Z.split(" ").map(_e=>_e.trim()).filter(_e=>_e!="").join(" "),me=k.size;k.set(me,K),X.push(`${me}%`),y(K)&&(z=!0)}),D.push(X.join(",")),N==C.length-1?D.push(b.substring(C[N].end)):D.push(b.substring(C[N].end,C[N+1].start))}return z?(h.block.contents=D.join(""),this.replacePart(h.block.startIndex,h.block.endIndex,h.block.contents,d),k):new Map}parseQualifiedRule(h){const d=h.index,y=this.parseSelector(h).trim();if(y)return{selector:y,block:this.eatBlock(h),startIndex:d,endIndex:h.index}}removeEnclosingDoubleQuotes(h){let d=h[0]=='"'?1:0,y=h[h.length-1]=='"'?h.length-1:h.length;return h.substring(d,y)}assertString(h,d){if(h.sheetSrc.substr(h.index,d.length)!=d)throw this.parseError(h,`Did not find expected sequence ${d}`);h.index+=d.length}replacePart(h,d,y,b){if(b.sheetSrc=b.sheetSrc.slice(0,h)+y+b.sheetSrc.slice(d),b.index>=d){const C=b.index-d;b.index=h+y.length+C}}eatComment(h){this.assertString(h,"/*"),this.eatUntil("*/",h,!0),this.assertString(h,"*/")}eatBlock(h){const d=h.index;this.assertString(h,"{");let y=1;for(;y!=0;)this.lookAhead("/*",h)?this.eatComment(h):(h.sheetSrc[h.index]==="{"?y++:h.sheetSrc[h.index]==="}"&&y--,this.advance(h));const b=h.index;return{startIndex:d,endIndex:b,contents:h.sheetSrc.slice(d,b)}}advance(h){if(h.index++,h.index>h.sheetSrc.length)throw this.parseError(h,"Advanced beyond the end")}parseError(h,d){return Error(`(${h.name?h.name:"<anonymous file>"}): ${d}`)}eatUntil(h,d,y=!1){const b=d.index;for(;!this.lookAhead(h,d);)this.advance(d);return y&&(d.sheetSrc=d.sheetSrc.slice(0,b)+" ".repeat(d.index-b)+d.sheetSrc.slice(d.index)),d.sheetSrc.slice(b,d.index)}parseSelector(h){let d=h.index;if(this.eatUntil("{",h),d===h.index)throw Error("Empty selector");return h.sheetSrc.slice(d,h.index)}eatWhitespace(h){Re.WHITE_SPACE.lastIndex=h.index;const d=Re.WHITE_SPACE.exec(h.sheetSrc);d&&(h.index+=d[0].length)}lookAhead(h,d){return d.sheetSrc.substr(d.index,h.length)==h}peek(h){return h.sheetSrc[h.index]}extractMatches(h,d,y=","){return d.exec(h)[1].trim().split(y).map(b=>b.trim())}split(h){return h.split(" ").map(d=>d.trim()).filter(d=>d!="")}};function Nl(h,d,y,b,C,k){const z=rs(d),D=ss(d,y);return Bo(us(h,z,D,b,C),k,us("cover",z,D,b,C),y)}function Ul(h,d,y){const b=$t.getAnimationTimelineOptions(d,y);if(!b)return null;const C=b["animation-timeline"];if(!C)return null;let k=$t.getScrollTimelineOptions(C,y)||$t.getViewTimelineOptions(C,y);return k?(k.subject&&function(z,D){const N=ls(D.subject),F=D.axis||D.axis;function X(K,me){let _e=null;for(const[$e,Mt]of K)if($e==100*me.offset){if(Mt=="from")_e=0;else if(Mt=="to")_e=100;else{const dt=Mt.split(" ");_e=dt.length==1?parseFloat(dt[0]):100*Nl(dt[0],N,D.subject,F,D.inset,CSS.percent(parseFloat(dt[1])))}break}return _e}const Z=$t.keyframeNamesSelectors.get(z.animationName);if(Z&&Z.size){const K=[];z.effect.getKeyframes().forEach(_e=>{const $e=X(Z,_e);$e!==null&&$e>=0&&$e<=100&&(_e.offset=$e/100,K.push(_e))});const me=K.sort((_e,$e)=>_e.offset<$e.offset?-1:_e.affset>$e.offset?1:0);z.effect.setKeyframes(me)}}(h,k),{timeline:k.source?new qe(k):new Pn(k),animOptions:b}):null}function Dl(){if(CSS.supports("animation-timeline: --works"))return!0;(function(){function d(b){if(b.innerHTML.trim().length===0||"aphrodite"in b.dataset)return;let C=$t.transpileStyleSheet(b.innerHTML,!0);C=$t.transpileStyleSheet(C,!1),b.innerHTML=C}function y(b){b.type!="text/css"&&b.rel!="stylesheet"||!b.href||new URL(b.href,document.baseURI).origin==location.origin&&fetch(b.getAttribute("href")).then(async C=>{const k=await C.text();let z=$t.transpileStyleSheet(k,!0);if(z=$t.transpileStyleSheet(k,!1),z!=k){const D=new Blob([z],{type:"text/css"}),N=URL.createObjectURL(D);b.setAttribute("href",N)}})}new MutationObserver(b=>{for(const C of b)for(const k of C.addedNodes)k instanceof HTMLStyleElement&&d(k),k instanceof HTMLLinkElement&&y(k)}).observe(document.documentElement,{childList:!0,subtree:!0}),document.querySelectorAll("style").forEach(b=>d(b)),document.querySelectorAll("link").forEach(b=>y(b))})();const h=CSS.supports;CSS.supports=d=>(d=d.replaceAll(/(animation-timeline|scroll-timeline(-(name|axis))?|view-timeline(-(name|axis|inset))?|timeline-scope)\s*:/g,"--supported-property:"),h(d)),window.addEventListener("animationstart",d=>{d.target.getAnimations().filter(y=>y.animationName===d.animationName).forEach(y=>{const b=Ul(y,y.animationName,d.target);if(b)if(!b.timeline||y instanceof sr)y.timeline=b.timeline;else{const C=new sr(y,b.timeline,b.animOptions);y.pause(),C.play()}})})}(function(){if(!Dl()){if(!Reflect.defineProperty(window,"ScrollTimeline",{value:qe}))throw Error("Error installing ScrollTimeline polyfill: could not attach ScrollTimeline to window");if(!Reflect.defineProperty(window,"ViewTimeline",{value:Pn}))throw Error("Error installing ViewTimeline polyfill: could not attach ViewTimeline to window");if(!Reflect.defineProperty(Element.prototype,"animate",{value:Ol}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's animate to DOM Element");if(!Reflect.defineProperty(window,"Animation",{value:sr}))throw Error("Error installing Animation constructor.");if(!Reflect.defineProperty(Element.prototype,"getAnimations",{value:Il}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to DOM Element");if(!Reflect.defineProperty(document,"getAnimations",{value:zl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to document")}})()})();class bd{constructor(e,t){if(this._retries=0,!Number.isInteger(e)||e<0)throw new Error("Base must be a positive integer or zero");if(t!==void 0&&(!Number.isInteger(t)||t<0))throw new Error("ExpMax must be a undefined, a positive integer or zero");this.base=e,this.expMax=t,this.i=0}get retries(){return this._retries}get current(){return this.base*Math.pow(2,this.i)}next(){return this._retries++,this.i=this.expMax===void 0?this.i+1:Math.min(this.i+1,this.expMax),this.current}reset(){this._retries=0,this.i=0}}var ce;(function(r){r.open="open",r.close="close",r.error="error",r.message="message",r.retry="retry",r.reconnect="reconnect"})(ce||(ce={}));class Wc{constructor(e,t,n){var i,s,a,o,c,l,u,p,m,f,x,w,g,v,_;this._closedByUser=!1,this.handleOpenEvent=S=>this.handleEvent(ce.open,S),this.handleErrorEvent=S=>this.handleEvent(ce.error,S),this.handleCloseEvent=S=>this.handleEvent(ce.close,S),this.handleMessageEvent=S=>this.handleEvent(ce.message,S),this._url=e,this._protocols=t,this._options={buffer:n?.buffer,retry:{maxRetries:(i=n?.retry)===null||i===void 0?void 0:i.maxRetries,instantReconnect:(s=n?.retry)===null||s===void 0?void 0:s.instantReconnect,backoff:(a=n?.retry)===null||a===void 0?void 0:a.backoff},listeners:{open:[...(c=(o=n?.listeners)===null||o===void 0?void 0:o.open)!==null&&c!==void 0?c:[]],close:[...(u=(l=n?.listeners)===null||l===void 0?void 0:l.close)!==null&&u!==void 0?u:[]],error:[...(m=(p=n?.listeners)===null||p===void 0?void 0:p.error)!==null&&m!==void 0?m:[]],message:[...(x=(f=n?.listeners)===null||f===void 0?void 0:f.message)!==null&&x!==void 0?x:[]],retry:[...(g=(w=n?.listeners)===null||w===void 0?void 0:w.retry)!==null&&g!==void 0?g:[]],reconnect:[...(_=(v=n?.listeners)===null||v===void 0?void 0:v.reconnect)!==null&&_!==void 0?_:[]]}},this._underlyingWebsocket=this.tryConnect()}get url(){return this._url}get protocols(){return this._protocols}get buffer(){return this._options.buffer}get maxRetries(){return this._options.retry.maxRetries}get instantReconnect(){return this._options.retry.instantReconnect}get backoff(){return this._options.retry.backoff}get closedByUser(){return this._closedByUser}get lastConnection(){return this._lastConnection}get underlyingWebsocket(){return this._underlyingWebsocket}get readyState(){return this._underlyingWebsocket.readyState}get bufferedAmount(){return this._underlyingWebsocket.bufferedAmount}get extensions(){return this._underlyingWebsocket.extensions}get binaryType(){return this._underlyingWebsocket.binaryType}set binaryType(e){this._underlyingWebsocket.binaryType=e}send(e){this.closedByUser||(this._underlyingWebsocket.readyState===this._underlyingWebsocket.OPEN?this._underlyingWebsocket.send(e):this.buffer!==void 0&&this.buffer.add(e))}close(e,t){this.cancelScheduledConnectionRetry(),this._closedByUser=!0,this._underlyingWebsocket.close(e,t)}addEventListener(e,t,n){this._options.listeners[e].push({listener:t,options:n})}removeEventListener(e,t,n){const i=s=>s.listener!==t||s.options!==n;this._options.listeners[e]=this._options.listeners[e].filter(i)}tryConnect(){return this._underlyingWebsocket=new WebSocket(this.url,this.protocols),this._underlyingWebsocket.addEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.addEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.addEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.addEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket}clearWebsocket(){this._underlyingWebsocket.removeEventListener(ce.open,this.handleOpenEvent),this._underlyingWebsocket.removeEventListener(ce.close,this.handleCloseEvent),this._underlyingWebsocket.removeEventListener(ce.error,this.handleErrorEvent),this._underlyingWebsocket.removeEventListener(ce.message,this.handleMessageEvent),this._underlyingWebsocket.close()}dispatchEvent(e,t){const n=this._options.listeners[e],i=[];n.forEach(({listener:s,options:a})=>{s(this,t),(a===void 0||a.once===void 0||!a.once)&&i.push({listener:s,options:a})}),this._options.listeners[e]=i}handleEvent(e,t){switch(e){case ce.close:this.dispatchEvent(e,t),this.scheduleConnectionRetryIfNeeded();break;case ce.open:if(this.backoff!==void 0&&this._lastConnection!==void 0){const n={retries:this.backoff.retries,lastConnection:new Date(this._lastConnection)},i=new CustomEvent(ce.reconnect,{detail:n});this.dispatchEvent(ce.reconnect,i),this.backoff.reset()}this._lastConnection=new Date,this.dispatchEvent(e,t),this.sendBufferedData();break;case ce.retry:this.dispatchEvent(e,t),this.clearWebsocket(),this.tryConnect();break;default:this.dispatchEvent(e,t);break}}sendBufferedData(){if(this.buffer!==void 0)for(let e=this.buffer.read();e!==void 0;e=this.buffer.read())this.send(e)}scheduleConnectionRetryIfNeeded(){if(this.closedByUser||this.backoff===void 0)return;const e=n=>{const i=new CustomEvent(ce.retry,{detail:n});this.handleEvent(ce.retry,i)},t={backoff:this._options.retry.instantReconnect===!0?0:this.backoff.next(),retries:this._options.retry.instantReconnect===!0?0:this.backoff.retries,lastConnection:this._lastConnection};(this._options.retry.maxRetries===void 0||t.retries<=this._options.retry.maxRetries)&&(this.retryTimeout=globalThis.setTimeout(()=>e(t),t.backoff))}cancelScheduledConnectionRetry(){globalThis.clearTimeout(this.retryTimeout)}}class xd{constructor(e){this._url=e}get url(){return this._url}withProtocols(e){return this._protocols=e,this}get protocols(){return this._protocols}withMaxRetries(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{maxRetries:e})}),this}get maxRetries(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.maxRetries}withInstantReconnect(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{instantReconnect:e})}),this}get instantReconnect(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.instantReconnect}withBackoff(e){var t;return this._options=Object.assign(Object.assign({},this._options),{retry:Object.assign(Object.assign({},(t=this._options)===null||t===void 0?void 0:t.retry),{backoff:e})}),this}get backoff(){var e,t;return(t=(e=this._options)===null||e===void 0?void 0:e.retry)===null||t===void 0?void 0:t.backoff}withBuffer(e){return this._options=Object.assign(Object.assign({},this._options),{buffer:e}),this}get buffer(){var e;return(e=this._options)===null||e===void 0?void 0:e.buffer}onOpen(e,t){return this.addListener(ce.open,e,t),this}onClose(e,t){return this.addListener(ce.close,e,t),this}onError(e,t){return this.addListener(ce.error,e,t),this}onMessage(e,t){return this.addListener(ce.message,e,t),this}onRetry(e,t){return this.addListener(ce.retry,e,t),this}onReconnect(e,t){return this.addListener(ce.reconnect,e,t),this}build(){return new Wc(this._url,this._protocols,this._options)}addListener(e,t,n){var i,s,a,o,c,l,u,p,m,f,x,w,g,v,_,S,T,M,E,P,O;return this._options=Object.assign(Object.assign({},this._options),{listeners:{open:(a=(s=(i=this._options)===null||i===void 0?void 0:i.listeners)===null||s===void 0?void 0:s.open)!==null&&a!==void 0?a:[],close:(l=(c=(o=this._options)===null||o===void 0?void 0:o.listeners)===null||c===void 0?void 0:c.close)!==null&&l!==void 0?l:[],error:(m=(p=(u=this._options)===null||u===void 0?void 0:u.listeners)===null||p===void 0?void 0:p.error)!==null&&m!==void 0?m:[],message:(w=(x=(f=this._options)===null||f===void 0?void 0:f.listeners)===null||x===void 0?void 0:x.message)!==null&&w!==void 0?w:[],retry:(_=(v=(g=this._options)===null||g===void 0?void 0:g.listeners)===null||v===void 0?void 0:v.retry)!==null&&_!==void 0?_:[],reconnect:(M=(T=(S=this._options)===null||S===void 0?void 0:S.listeners)===null||T===void 0?void 0:T.reconnect)!==null&&M!==void 0?M:[],[e]:[...(O=(P=(E=this._options)===null||E===void 0?void 0:E.listeners)===null||P===void 0?void 0:P[e])!==null&&O!==void 0?O:[],{listener:t,options:n}]}}),this}}const wd=Object.freeze(Object.defineProperty({__proto__:null,ExponentialBackoff:bd,Websocket:Wc,WebsocketBuilder:xd,get WebsocketEvent(){return ce}},Symbol.toStringTag,{value:"Module"})),$s=0,Hc=1,qc=2,eo=2,to=1.25,Xc=1,ui=32,Rr=65535,_d=Math.pow(2,-24),no=Symbol("SKIP_GENERATION");function Td(r){return r.index?r.index.count:r.attributes.position.count}function Nn(r){return Td(r)/3}function Md(r,e=ArrayBuffer){return r>65535?new Uint32Array(new e(4*r)):new Uint16Array(new e(2*r))}function Cd(r,e){if(!r.index){const t=r.attributes.position.count,n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Md(t,n);r.setIndex(new ot(i,1));for(let s=0;s<t;s++)i[s]=s}}function Yc(r,e){const t=Nn(r),n=e||r.drawRange,i=n.start/3,s=(n.start+n.count)/3,a=Math.max(0,i),o=Math.min(t,s)-a;return[{offset:Math.floor(a),count:Math.floor(o)}]}function Zc(r,e){if(!r.groups||!r.groups.length)return Yc(r,e);const t=[],n=e||r.drawRange,i=n.start/3,s=(n.start+n.count)/3,a=[];for(const l of r.groups){const u=l.start/3,p=(l.start+l.count)/3;u<s&&p>i&&(a.push({pos:Math.max(i,u),isStart:!0}),a.push({pos:Math.min(s,p),isStart:!1}))}a.sort((l,u)=>l.pos!==u.pos?l.pos-u.pos:l.type==="end"?-1:1);let o=0,c=null;for(const l of a){const u=l.pos;o!==0&&u!==c&&t.push({offset:c,count:u-c}),o+=l.isStart?1:-1,c=u}return t}function io(r,e,t,n,i){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,u=-1/0,p=1/0,m=1/0,f=1/0,x=-1/0,w=-1/0,g=-1/0;const v=r.offset||0;for(let _=(e-v)*6,S=(e+t-v)*6;_<S;_+=6){const T=r[_+0],M=r[_+1],E=T-M,P=T+M;E<s&&(s=E),P>c&&(c=P),T<p&&(p=T),T>x&&(x=T);const O=r[_+2],R=r[_+3],A=O-R,B=O+R;A<a&&(a=A),B>l&&(l=B),O<m&&(m=O),O>w&&(w=O);const I=r[_+4],U=r[_+5],L=I-U,j=I+U;L<o&&(o=L),j>u&&(u=j),I<f&&(f=I),I>g&&(g=I)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=u,i[0]=p,i[1]=m,i[2]=f,i[3]=x,i[4]=w,i[5]=g}function Kc(r,e,t=null,n=null,i=null){const s=r.attributes.position,a=r.index?r.index.array:null,o=s.normalized;if(i===null)i=new Float32Array(t*6),i.offset=e;else if(e<0||t+e>i.length/6)throw new Error("MeshBVH: compute triangle bounds range is invalid.");const c=s.array,l=s.offset||0;let u=3;s.isInterleavedBufferAttribute&&(u=s.data.stride);const p=["getX","getY","getZ"],m=i.offset;for(let f=e,x=e+t;f<x;f++){const w=(n?n[f]:f)*3,g=(f-m)*6;let v=w+0,_=w+1,S=w+2;a&&(v=a[v],_=a[_],S=a[S]),o||(v=v*u+l,_=_*u+l,S=S*u+l);for(let T=0;T<3;T++){let M,E,P;o?(M=s[p[T]](v),E=s[p[T]](_),P=s[p[T]](S)):(M=c[v+T],E=c[_+T],P=c[S+T]);let O=M;E<O&&(O=E),P<O&&(O=P);let R=M;E>R&&(R=E),P>R&&(R=P);const A=(R-O)/2,B=T*2;i[g+B+0]=O+A,i[g+B+1]=A+(Math.abs(O)+A)*_d}}return i}function be(r,e,t){return t.min.x=e[r],t.min.y=e[r+1],t.min.z=e[r+2],t.max.x=e[r+3],t.max.y=e[r+4],t.max.z=e[r+5],t}function Qc(r){let e=-1,t=-1/0;for(let n=0;n<3;n++){const i=r[n+3]-r[n];i>t&&(t=i,e=n)}return e}function $c(r,e){e.set(r)}function el(r,e,t){let n,i;for(let s=0;s<3;s++){const a=s+3;n=r[s],i=e[s],t[s]=n<i?n:i,n=r[a],i=e[a],t[a]=n>i?n:i}}function Ar(r,e,t){for(let n=0;n<3;n++){const i=e[r+2*n],s=e[r+2*n+1],a=i-s,o=i+s;a<t[n]&&(t[n]=a),o>t[n+3]&&(t[n+3]=o)}}function hi(r){const e=r[3]-r[0],t=r[4]-r[1],n=r[5]-r[2];return 2*(e*t+t*n+n*e)}const Yt=32,Ed=(r,e)=>r.candidate-e.candidate,sn=new Array(Yt).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),Or=new Float32Array(6);function Pd(r,e,t,n,i,s){let a=-1,o=0;if(s===$s)a=Qc(e),a!==-1&&(o=(e[a]+e[a+3])/2);else if(s===Hc)a=Qc(r),a!==-1&&(o=kd(t,n,i,a));else if(s===qc){const c=hi(r);let l=to*i;const u=t.offset||0,p=(n-u)*6,m=(n+i-u)*6;for(let f=0;f<3;f++){const x=e[f],w=(e[f+3]-x)/Yt;if(i<Yt/4){const g=[...sn];g.length=i;let v=0;for(let S=p;S<m;S+=6,v++){const T=g[v];T.candidate=t[S+2*f],T.count=0;const{bounds:M,leftCacheBounds:E,rightCacheBounds:P}=T;for(let O=0;O<3;O++)P[O]=1/0,P[O+3]=-1/0,E[O]=1/0,E[O+3]=-1/0,M[O]=1/0,M[O+3]=-1/0;Ar(S,t,M)}g.sort(Ed);let _=i;for(let S=0;S<_;S++){const T=g[S];for(;S+1<_&&g[S+1].candidate===T.candidate;)g.splice(S+1,1),_--}for(let S=p;S<m;S+=6){const T=t[S+2*f];for(let M=0;M<_;M++){const E=g[M];T>=E.candidate?Ar(S,t,E.rightCacheBounds):(Ar(S,t,E.leftCacheBounds),E.count++)}}for(let S=0;S<_;S++){const T=g[S],M=T.count,E=i-T.count,P=T.leftCacheBounds,O=T.rightCacheBounds;let R=0;M!==0&&(R=hi(P)/c);let A=0;E!==0&&(A=hi(O)/c);const B=Xc+to*(R*M+A*E);B<l&&(a=f,l=B,o=T.candidate)}}else{for(let _=0;_<Yt;_++){const S=sn[_];S.count=0,S.candidate=x+w+_*w;const T=S.bounds;for(let M=0;M<3;M++)T[M]=1/0,T[M+3]=-1/0}for(let _=p;_<m;_+=6){let S=~~((t[_+2*f]-x)/w);S>=Yt&&(S=Yt-1);const T=sn[S];T.count++,Ar(_,t,T.bounds)}const g=sn[Yt-1];$c(g.bounds,g.rightCacheBounds);for(let _=Yt-2;_>=0;_--){const S=sn[_],T=sn[_+1];el(S.bounds,T.rightCacheBounds,S.rightCacheBounds)}let v=0;for(let _=0;_<Yt-1;_++){const S=sn[_],T=S.count,M=S.bounds,E=sn[_+1].rightCacheBounds;T!==0&&(v===0?$c(M,Or):el(M,Or,Or)),v+=T;let P=0,O=0;v!==0&&(P=hi(Or)/c);const R=i-v;R!==0&&(O=hi(E)/c);const A=Xc+to*(P*v+O*R);A<l&&(a=f,l=A,o=S.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${s} used.`);return{axis:a,pos:o}}function kd(r,e,t,n){let i=0;const s=r.offset;for(let a=e,o=e+t;a<o;a++)i+=r[(a-s)*6+n*2];return i/t}class ro{constructor(){this.boundingData=new Float32Array(6)}}function Rd(r,e,t,n,i,s){let a=n,o=n+i-1;const c=s.pos,l=s.axis*2,u=t.offset||0;for(;;){for(;a<=o&&t[(a-u)*6+l]<c;)a++;for(;a<=o&&t[(o-u)*6+l]>=c;)o--;if(a<o){for(let p=0;p<3;p++){let m=e[a*3+p];e[a*3+p]=e[o*3+p],e[o*3+p]=m}for(let p=0;p<6;p++){const m=a-u,f=o-u,x=t[m*6+p];t[m*6+p]=t[f*6+p],t[f*6+p]=x}a++,o--}else return a}}function Ad(r,e,t,n,i,s){let a=n,o=n+i-1;const c=s.pos,l=s.axis*2,u=t.offset||0;for(;;){for(;a<=o&&t[(a-u)*6+l]<c;)a++;for(;a<=o&&t[(o-u)*6+l]>=c;)o--;if(a<o){let p=r[a];r[a]=r[o],r[o]=p;for(let m=0;m<6;m++){const f=a-u,x=o-u,w=t[f*6+m];t[f*6+m]=t[x*6+m],t[x*6+m]=w}a++,o--}else return a}}function tt(r,e){return e[r+15]===65535}function ct(r,e){return e[r+6]}function pt(r,e){return e[r+14]}function ft(r){return r+8}function mt(r,e){return e[r+6]}function tl(r,e){return e[r+7]}let nl,di,Ir,il;const Od=Math.pow(2,32);function so(r){return"count"in r?1:1+so(r.left)+so(r.right)}function Id(r,e,t){return nl=new Float32Array(t),di=new Uint32Array(t),Ir=new Uint16Array(t),il=new Uint8Array(t),oo(r,e)}function oo(r,e){const t=r/4,n=r/2,i="count"in e,s=e.boundingData;for(let a=0;a<6;a++)nl[t+a]=s[a];if(i)if(e.buffer){const a=e.buffer;il.set(new Uint8Array(a),r);for(let o=r,c=r+a.byteLength;o<c;o+=ui){const l=o/2;tt(l,Ir)||(di[o/4+6]+=t)}return r+a.byteLength}else{const a=e.offset,o=e.count;return di[t+6]=a,Ir[n+14]=o,Ir[n+15]=Rr,r+ui}else{const a=e.left,o=e.right,c=e.splitAxis;let l;if(l=oo(r+ui,a),l/4>Od)throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return di[t+6]=l/4,l=oo(l,o),di[t+7]=c,l}}function zd(r,e,t){const n=(r.index?r.index.count:r.attributes.position.count)/3>65536,i=t.reduce((l,u)=>l+u.count,0),s=n?4:2,a=e?new SharedArrayBuffer(i*s):new ArrayBuffer(i*s),o=n?new Uint32Array(a):new Uint16Array(a);let c=0;for(let l=0;l<t.length;l++){const{offset:u,count:p}=t[l];for(let m=0;m<p;m++)o[c+m]=u+m;c+=p}return o}function Bd(r,e,t,n,i){const{maxDepth:s,verbose:a,maxLeafTris:o,strategy:c,onProgress:l,indirect:u}=i,p=r._indirectBuffer,m=r.geometry,f=m.index?m.index.array:null,x=u?Ad:Rd,w=Nn(m),g=new Float32Array(6);let v=!1;const _=new ro;return io(e,t,n,_.boundingData,g),T(_,t,n,g),_;function S(M){l&&l(M/w)}function T(M,E,P,O=null,R=0){if(!v&&R>=s&&(v=!0,a&&(console.warn(`MeshBVH: Max depth of ${s} reached when generating BVH. Consider increasing maxDepth.`),console.warn(m))),P<=o||R>=s)return S(E+P),M.offset=E,M.count=P,M;const A=Pd(M.boundingData,O,e,E,P,c);if(A.axis===-1)return S(E+P),M.offset=E,M.count=P,M;const B=x(p,f,e,E,P,A);if(B===E||B===E+P)S(E+P),M.offset=E,M.count=P;else{M.splitAxis=A.axis;const I=new ro,U=E,L=B-E;M.left=I,io(e,U,L,I.boundingData,g),T(I,U,L,g,R+1);const j=new ro,H=B,Q=P-L;M.right=j,io(e,H,Q,j.boundingData,g),T(j,H,Q,g,R+1)}return M}}function Nd(r,e){const t=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,n=r.geometry;let i,s;if(e.indirect){const a=Zc(n,e.range),o=zd(n,e.useSharedArrayBuffer,a);r._indirectBuffer=o,i=Kc(n,0,o.length,o),s=[{offset:0,count:o.length}]}else{Cd(n,e);const a=Yc(n,e.range)[0];i=Kc(n,a.offset,a.count),s=Zc(n,e.range)}r._roots=s.map(a=>{const o=Bd(r,i,a.offset,a.count,e),c=so(o),l=new t(ui*c);return Id(0,o,l),l})}class Zt{constructor(){this.min=1/0,this.max=-1/0}setFromPointsField(e,t){let n=1/0,i=-1/0;for(let s=0,a=e.length;s<a;s++){const o=e[s][t];n=o<n?o:n,i=o>i?o:i}this.min=n,this.max=i}setFromPoints(e,t){let n=1/0,i=-1/0;for(let s=0,a=t.length;s<a;s++){const o=t[s],c=e.dot(o);n=c<n?c:n,i=c>i?c:i}this.min=n,this.max=i}isSeparated(e){return this.min>e.max||e.min>this.max}}Zt.prototype.setFromBox=function(){const r=new q;return function(e,t){const n=t.min,i=t.max;let s=1/0,a=-1/0;for(let o=0;o<=1;o++)for(let c=0;c<=1;c++)for(let l=0;l<=1;l++){r.x=n.x*o+i.x*(1-o),r.y=n.y*c+i.y*(1-c),r.z=n.z*l+i.z*(1-l);const u=e.dot(r);s=Math.min(u,s),a=Math.max(u,a)}this.min=s,this.max=a}}();const Ud=function(){const r=new q,e=new q,t=new q;return function(n,i,s){const a=n.start,o=r,c=i.start,l=e;t.subVectors(a,c),r.subVectors(n.end,n.start),e.subVectors(i.end,i.start);const u=t.dot(l),p=l.dot(o),m=l.dot(l),f=t.dot(o),x=o.dot(o)*m-p*p;let w,g;x!==0?w=(u*p-f*m)/x:w=0,g=(u+w*p)/m,s.x=w,s.y=g}}(),ao=function(){const r=new en,e=new q,t=new q;return function(n,i,s,a){Ud(n,i,r);let o=r.x,c=r.y;if(o>=0&&o<=1&&c>=0&&c<=1){n.at(o,s),i.at(c,a);return}else if(o>=0&&o<=1){c<0?i.at(0,a):i.at(1,a),n.closestPointToPoint(a,!0,s);return}else if(c>=0&&c<=1){o<0?n.at(0,s):n.at(1,s),i.closestPointToPoint(s,!0,a);return}else{let l;o<0?l=n.start:l=n.end;let u;c<0?u=i.start:u=i.end;const p=e,m=t;if(n.closestPointToPoint(u,!0,e),i.closestPointToPoint(l,!0,t),p.distanceToSquared(u)<=m.distanceToSquared(l)){s.copy(p),a.copy(u);return}else{s.copy(l),a.copy(m);return}}}}(),Dd=function(){const r=new q,e=new q,t=new ea,n=new Wt;return function(i,s){const{radius:a,center:o}=i,{a:c,b:l,c:u}=s;if(n.start=c,n.end=l,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a||(n.start=c,n.end=u,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a)||(n.start=l,n.end=u,n.closestPointToPoint(o,!0,r).distanceTo(o)<=a))return!0;const p=s.getPlane(t);if(Math.abs(p.distanceToPoint(o))<=a){const m=p.projectPoint(o,e);if(s.containsPoint(m))return!0}return!1}}(),Ld=["x","y","z"],Kt=1e-15,rl=Kt*Kt;function yt(r){return Math.abs(r)<Kt}class gt extends pn{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new q),this.satBounds=new Array(4).fill().map(()=>new Zt),this.points=[this.a,this.b,this.c],this.plane=new ea,this.isDegenerateIntoSegment=!1,this.isDegenerateIntoPoint=!1,this.degenerateSegment=new Wt,this.needsUpdate=!0}intersectsSphere(e){return Dd(e,this)}update(){const e=this.a,t=this.b,n=this.c,i=this.points,s=this.satAxes,a=this.satBounds,o=s[0],c=a[0];this.getNormal(o),c.setFromPoints(o,i);const l=s[1],u=a[1];l.subVectors(e,t),u.setFromPoints(l,i);const p=s[2],m=a[2];p.subVectors(t,n),m.setFromPoints(p,i);const f=s[3],x=a[3];f.subVectors(n,e),x.setFromPoints(f,i);const w=l.length(),g=p.length(),v=f.length();this.isDegenerateIntoPoint=!1,this.isDegenerateIntoSegment=!1,w<Kt?g<Kt||v<Kt?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(e),this.degenerateSegment.end.copy(n)):g<Kt?v<Kt?this.isDegenerateIntoPoint=!0:(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(t),this.degenerateSegment.end.copy(e)):v<Kt&&(this.isDegenerateIntoSegment=!0,this.degenerateSegment.start.copy(n),this.degenerateSegment.end.copy(t)),this.plane.setFromNormalAndCoplanarPoint(o,e),this.needsUpdate=!1}}gt.prototype.closestPointToSegment=function(){const r=new q,e=new q,t=new Wt;return function(n,i=null,s=null){const{start:a,end:o}=n,c=this.points;let l,u=1/0;for(let p=0;p<3;p++){const m=(p+1)%3;t.start.copy(c[p]),t.end.copy(c[m]),ao(t,n,r,e),l=r.distanceToSquared(e),l<u&&(u=l,i&&i.copy(r),s&&s.copy(e))}return this.closestPointToPoint(a,r),l=a.distanceToSquared(r),l<u&&(u=l,i&&i.copy(r),s&&s.copy(a)),this.closestPointToPoint(o,r),l=o.distanceToSquared(r),l<u&&(u=l,i&&i.copy(r),s&&s.copy(o)),Math.sqrt(u)}}(),gt.prototype.intersectsTriangle=function(){const r=new gt,e=new Zt,t=new Zt,n=new q,i=new q,s=new q,a=new q,o=new Wt,c=new Wt,l=new q,u=new en,p=new en;function m(S,T,M,E){const P=n;!S.isDegenerateIntoPoint&&!S.isDegenerateIntoSegment?P.copy(S.plane.normal):P.copy(T.plane.normal);const O=S.satBounds,R=S.satAxes;for(let I=1;I<4;I++){const U=O[I],L=R[I];if(e.setFromPoints(L,T.points),U.isSeparated(e)||(a.copy(P).cross(L),e.setFromPoints(a,S.points),t.setFromPoints(a,T.points),e.isSeparated(t)))return!1}const A=T.satBounds,B=T.satAxes;for(let I=1;I<4;I++){const U=A[I],L=B[I];if(e.setFromPoints(L,S.points),U.isSeparated(e)||(a.crossVectors(P,L),e.setFromPoints(a,S.points),t.setFromPoints(a,T.points),e.isSeparated(t)))return!1}return M&&(E||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),M.start.set(0,0,0),M.end.set(0,0,0)),!0}function f(S,T,M,E,P,O,R,A,B,I,U){let L=R/(R-A);I.x=E+(P-E)*L,U.start.subVectors(T,S).multiplyScalar(L).add(S),L=R/(R-B),I.y=E+(O-E)*L,U.end.subVectors(M,S).multiplyScalar(L).add(S)}function x(S,T,M,E,P,O,R,A,B,I,U){if(P>0)f(S.c,S.a,S.b,E,T,M,B,R,A,I,U);else if(O>0)f(S.b,S.a,S.c,M,T,E,A,R,B,I,U);else if(A*B>0||R!=0)f(S.a,S.b,S.c,T,M,E,R,A,B,I,U);else if(A!=0)f(S.b,S.a,S.c,M,T,E,A,R,B,I,U);else if(B!=0)f(S.c,S.a,S.b,E,T,M,B,R,A,I,U);else return!0;return!1}function w(S,T,M,E){const P=T.degenerateSegment,O=S.plane.distanceToPoint(P.start),R=S.plane.distanceToPoint(P.end);return yt(O)?yt(R)?m(S,T,M,E):(M&&(M.start.copy(P.start),M.end.copy(P.start)),S.containsPoint(P.start)):yt(R)?(M&&(M.start.copy(P.end),M.end.copy(P.end)),S.containsPoint(P.end)):S.plane.intersectLine(P,n)!=null?(M&&(M.start.copy(n),M.end.copy(n)),S.containsPoint(n)):!1}function g(S,T,M){const E=T.a;return yt(S.plane.distanceToPoint(E))&&S.containsPoint(E)?(M&&(M.start.copy(E),M.end.copy(E)),!0):!1}function v(S,T,M){const E=S.degenerateSegment,P=T.a;return E.closestPointToPoint(P,!0,n),P.distanceToSquared(n)<rl?(M&&(M.start.copy(P),M.end.copy(P)),!0):!1}function _(S,T,M,E){if(S.isDegenerateIntoSegment)if(T.isDegenerateIntoSegment){const P=S.degenerateSegment,O=T.degenerateSegment,R=i,A=s;P.delta(R),O.delta(A);const B=n.subVectors(O.start,P.start),I=R.x*A.y-R.y*A.x;if(yt(I))return!1;const U=(B.x*A.y-B.y*A.x)/I,L=-(R.x*B.y-R.y*B.x)/I;if(U<0||U>1||L<0||L>1)return!1;const j=P.start.z+R.z*U,H=O.start.z+A.z*L;return yt(j-H)?(M&&(M.start.copy(P.start).addScaledVector(R,U),M.end.copy(P.start).addScaledVector(R,U)),!0):!1}else return T.isDegenerateIntoPoint?v(S,T,M):w(T,S,M,E);else{if(S.isDegenerateIntoPoint)return T.isDegenerateIntoPoint?T.a.distanceToSquared(S.a)<rl?(M&&(M.start.copy(S.a),M.end.copy(S.a)),!0):!1:T.isDegenerateIntoSegment?v(T,S,M):g(T,S,M);if(T.isDegenerateIntoPoint)return g(S,T,M);if(T.isDegenerateIntoSegment)return w(S,T,M,E)}}return function(S,T=null,M=!1){this.needsUpdate&&this.update(),S.isExtendedTriangle?S.needsUpdate&&S.update():(r.copy(S),r.update(),S=r);const E=_(this,S,T,M);if(E!==void 0)return E;const P=this.plane,O=S.plane;let R=O.distanceToPoint(this.a),A=O.distanceToPoint(this.b),B=O.distanceToPoint(this.c);yt(R)&&(R=0),yt(A)&&(A=0),yt(B)&&(B=0);const I=R*A,U=R*B;if(I>0&&U>0)return!1;let L=P.distanceToPoint(S.a),j=P.distanceToPoint(S.b),H=P.distanceToPoint(S.c);yt(L)&&(L=0),yt(j)&&(j=0),yt(H)&&(H=0);const Q=L*j,J=L*H;if(Q>0&&J>0)return!1;i.copy(P.normal),s.copy(O.normal);const pe=i.cross(s);let ie=0,he=Math.abs(pe.x);const oe=Math.abs(pe.y);oe>he&&(he=oe,ie=1),Math.abs(pe.z)>he&&(ie=2);const le=Ld[ie],xe=this.a[le],ge=this.b[le],de=this.c[le],se=S.a[le],Ge=S.b[le],Ie=S.c[le];if(x(this,xe,ge,de,I,U,R,A,B,u,o))return m(this,S,T,M);if(x(S,se,Ge,Ie,Q,J,L,j,H,p,c))return m(this,S,T,M);if(u.y<u.x){const Ee=u.y;u.y=u.x,u.x=Ee,l.copy(o.start),o.start.copy(o.end),o.end.copy(l)}if(p.y<p.x){const Ee=p.y;p.y=p.x,p.x=Ee,l.copy(c.start),c.start.copy(c.end),c.end.copy(l)}return u.y<p.x||p.y<u.x?!1:(T&&(p.x>u.x?T.start.copy(c.start):T.start.copy(o.start),p.y<u.y?T.end.copy(c.end):T.end.copy(o.end)),!0)}}(),gt.prototype.distanceToPoint=function(){const r=new q;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}(),gt.prototype.distanceToTriangle=function(){const r=new q,e=new q,t=["a","b","c"],n=new Wt,i=new Wt;return function(s,a=null,o=null){const c=a||o?n:null;if(this.intersectsTriangle(s,c))return(a||o)&&(a&&c.getCenter(a),o&&c.getCenter(o)),0;let l=1/0;for(let u=0;u<3;u++){let p;const m=t[u],f=s[m];this.closestPointToPoint(f,r),p=f.distanceToSquared(r),p<l&&(l=p,a&&a.copy(r),o&&o.copy(f));const x=this[m];s.closestPointToPoint(x,r),p=x.distanceToSquared(r),p<l&&(l=p,a&&a.copy(x),o&&o.copy(r))}for(let u=0;u<3;u++){const p=t[u],m=t[(u+1)%3];n.set(this[p],this[m]);for(let f=0;f<3;f++){const x=t[f],w=t[(f+1)%3];i.set(s[x],s[w]),ao(n,i,r,e);const g=r.distanceToSquared(e);g<l&&(l=g,a&&a.copy(r),o&&o.copy(e))}}return Math.sqrt(l)}}();class Je{constructor(e,t,n){this.isOrientedBox=!0,this.min=new q,this.max=new q,this.matrix=new Et,this.invMatrix=new Et,this.points=new Array(8).fill().map(()=>new q),this.satAxes=new Array(3).fill().map(()=>new q),this.satBounds=new Array(3).fill().map(()=>new Zt),this.alignedSatBounds=new Array(3).fill().map(()=>new Zt),this.needsUpdate=!1,e&&this.min.copy(e),t&&this.max.copy(t),n&&this.matrix.copy(n)}set(e,t,n){this.min.copy(e),this.max.copy(t),this.matrix.copy(n),this.needsUpdate=!0}copy(e){this.min.copy(e.min),this.max.copy(e.max),this.matrix.copy(e.matrix),this.needsUpdate=!0}}Je.prototype.update=function(){return function(){const r=this.matrix,e=this.min,t=this.max,n=this.points;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){const p=1*c|2*l|4*u,m=n[p];m.x=c?t.x:e.x,m.y=l?t.y:e.y,m.z=u?t.z:e.z,m.applyMatrix4(r)}const i=this.satBounds,s=this.satAxes,a=n[0];for(let c=0;c<3;c++){const l=s[c],u=i[c],p=1<<c,m=n[p];l.subVectors(a,m),u.setFromPoints(l,n)}const o=this.alignedSatBounds;o[0].setFromPointsField(n,"x"),o[1].setFromPointsField(n,"y"),o[2].setFromPointsField(n,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}}(),Je.prototype.intersectsBox=function(){const r=new Zt;return function(e){this.needsUpdate&&this.update();const t=e.min,n=e.max,i=this.satBounds,s=this.satAxes,a=this.alignedSatBounds;if(r.min=t.x,r.max=n.x,a[0].isSeparated(r)||(r.min=t.y,r.max=n.y,a[1].isSeparated(r))||(r.min=t.z,r.max=n.z,a[2].isSeparated(r)))return!1;for(let o=0;o<3;o++){const c=s[o],l=i[o];if(r.setFromBox(c,e),l.isSeparated(r))return!1}return!0}}(),Je.prototype.intersectsTriangle=function(){const r=new gt,e=new Array(3),t=new Zt,n=new Zt,i=new q;return function(s){this.needsUpdate&&this.update(),s.isExtendedTriangle?s.needsUpdate&&s.update():(r.copy(s),r.update(),s=r);const a=this.satBounds,o=this.satAxes;e[0]=s.a,e[1]=s.b,e[2]=s.c;for(let p=0;p<3;p++){const m=a[p],f=o[p];if(t.setFromPoints(f,e),m.isSeparated(t))return!1}const c=s.satBounds,l=s.satAxes,u=this.points;for(let p=0;p<3;p++){const m=c[p],f=l[p];if(t.setFromPoints(f,u),m.isSeparated(t))return!1}for(let p=0;p<3;p++){const m=o[p];for(let f=0;f<4;f++){const x=l[f];if(i.crossVectors(m,x),t.setFromPoints(i,e),n.setFromPoints(i,u),t.isSeparated(n))return!1}}return!0}}(),Je.prototype.closestPointToPoint=function(){return function(r,e){return this.needsUpdate&&this.update(),e.copy(r).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),e}}(),Je.prototype.distanceToPoint=function(){const r=new q;return function(e){return this.closestPointToPoint(e,r),e.distanceTo(r)}}(),Je.prototype.distanceToBox=function(){const r=["x","y","z"],e=new Array(12).fill().map(()=>new Wt),t=new Array(12).fill().map(()=>new Wt),n=new q,i=new q;return function(s,a=0,o=null,c=null){if(this.needsUpdate&&this.update(),this.intersectsBox(s))return(o||c)&&(s.getCenter(i),this.closestPointToPoint(i,n),s.closestPointToPoint(n,i),o&&o.copy(n),c&&c.copy(i)),0;const l=a*a,u=s.min,p=s.max,m=this.points;let f=1/0;for(let w=0;w<8;w++){const g=m[w];i.copy(g).clamp(u,p);const v=g.distanceToSquared(i);if(v<f&&(f=v,o&&o.copy(g),c&&c.copy(i),v<l))return Math.sqrt(v)}let x=0;for(let w=0;w<3;w++)for(let g=0;g<=1;g++)for(let v=0;v<=1;v++){const _=(w+1)%3,S=(w+2)%3,T=g<<_|v<<S,M=1<<w|g<<_|v<<S,E=m[T],P=m[M];e[x].set(E,P);const O=r[w],R=r[_],A=r[S],B=t[x],I=B.start,U=B.end;I[O]=u[O],I[R]=g?u[R]:p[R],I[A]=v?u[A]:p[R],U[O]=p[O],U[R]=g?u[R]:p[R],U[A]=v?u[A]:p[R],x++}for(let w=0;w<=1;w++)for(let g=0;g<=1;g++)for(let v=0;v<=1;v++){i.x=w?p.x:u.x,i.y=g?p.y:u.y,i.z=v?p.z:u.z,this.closestPointToPoint(i,n);const _=i.distanceToSquared(n);if(_<f&&(f=_,o&&o.copy(n),c&&c.copy(i),_<l))return Math.sqrt(_)}for(let w=0;w<12;w++){const g=e[w];for(let v=0;v<12;v++){const _=t[v];ao(g,_,n,i);const S=n.distanceToSquared(i);if(S<f&&(f=S,o&&o.copy(n),c&&c.copy(i),S<l))return Math.sqrt(S)}}return Math.sqrt(f)}}();class co{constructor(e){this._getNewPrimitive=e,this._primitives=[]}getPrimitive(){const e=this._primitives;return e.length===0?this._getNewPrimitive():e.pop()}releasePrimitive(e){this._primitives.push(e)}}class Fd extends co{constructor(){super(()=>new gt)}}const vt=new Fd;class Vd{constructor(){this.float32Array=null,this.uint16Array=null,this.uint32Array=null;const e=[];let t=null;this.setBuffer=n=>{t&&e.push(t),t=n,this.float32Array=new Float32Array(n),this.uint16Array=new Uint16Array(n),this.uint32Array=new Uint32Array(n)},this.clearBuffer=()=>{t=null,this.float32Array=null,this.uint16Array=null,this.uint32Array=null,e.length!==0&&this.setBuffer(e.pop())}}}const ye=new Vd;let on,Un;const Dn=[],zr=new co(()=>new It);function jd(r,e,t,n,i,s){on=zr.getPrimitive(),Un=zr.getPrimitive(),Dn.push(on,Un),ye.setBuffer(r._roots[e]);const a=lo(0,r.geometry,t,n,i,s);ye.clearBuffer(),zr.releasePrimitive(on),zr.releasePrimitive(Un),Dn.pop(),Dn.pop();const o=Dn.length;return o>0&&(Un=Dn[o-1],on=Dn[o-2]),a}function lo(r,e,t,n,i=null,s=0,a=0){const{float32Array:o,uint16Array:c,uint32Array:l}=ye;let u=r*2;if(tt(u,c)){const p=ct(r,l),m=pt(u,c);return be(r,o,on),n(p,m,!1,a,s+r,on)}else{let p=function(B){const{uint16Array:I,uint32Array:U}=ye;let L=B*2;for(;!tt(L,I);)B=ft(B),L=B*2;return ct(B,U)},m=function(B){const{uint16Array:I,uint32Array:U}=ye;let L=B*2;for(;!tt(L,I);)B=mt(B,U),L=B*2;return ct(B,U)+pt(L,I)};const f=ft(r),x=mt(r,l);let w=f,g=x,v,_,S,T;if(i&&(S=on,T=Un,be(w,o,S),be(g,o,T),v=i(S),_=i(T),_<v)){w=x,g=f;const B=v;v=_,_=B,S=T}S||(S=on,be(w,o,S));const M=tt(w*2,c),E=t(S,M,v,a+1,s+w);let P;if(E===eo){const B=p(w),I=m(w)-B;P=n(B,I,!0,a+1,s+w,S)}else P=E&&lo(w,e,t,n,i,s,a+1);if(P)return!0;T=Un,be(g,o,T);const O=tt(g*2,c),R=t(T,O,_,a+1,s+g);let A;if(R===eo){const B=p(g),I=m(g)-B;A=n(B,I,!0,a+1,s+g,T)}else A=R&&lo(g,e,t,n,i,s,a+1);return!!A}}const pi=new q,uo=new q;function Jd(r,e,t={},n=0,i=1/0){const s=n*n,a=i*i;let o=1/0,c=null;if(r.shapecast({boundsTraverseOrder:u=>(pi.copy(e).clamp(u.min,u.max),pi.distanceToSquared(e)),intersectsBounds:(u,p,m)=>m<o&&m<a,intersectsTriangle:(u,p)=>{u.closestPointToPoint(e,pi);const m=e.distanceToSquared(pi);return m<o&&(uo.copy(pi),o=m,c=p),m<s}}),o===1/0)return null;const l=Math.sqrt(o);return t.point?t.point.copy(uo):t.point=uo.clone(),t.distance=l,t.faceIndex=c,t}const Br=parseInt(ta)>=169,Gd=parseInt(ta)<=161,yn=new q,gn=new q,vn=new q,Nr=new en,Ur=new en,Dr=new en,sl=new q,ol=new q,al=new q,fi=new q;function Wd(r,e,t,n,i,s,a,o){let c;if(s===Hl?c=r.intersectTriangle(n,t,e,!0,i):c=r.intersectTriangle(e,t,n,s!==ms,i),c===null)return null;const l=r.origin.distanceTo(i);return l<a||l>o?null:{distance:l,point:i.clone()}}function cl(r,e,t,n,i,s,a,o,c,l,u){yn.fromBufferAttribute(e,s),gn.fromBufferAttribute(e,a),vn.fromBufferAttribute(e,o);const p=Wd(r,yn,gn,vn,fi,c,l,u);if(p){if(n){Nr.fromBufferAttribute(n,s),Ur.fromBufferAttribute(n,a),Dr.fromBufferAttribute(n,o),p.uv=new en;const f=pn.getInterpolation(fi,yn,gn,vn,Nr,Ur,Dr,p.uv);Br||(p.uv=f)}if(i){Nr.fromBufferAttribute(i,s),Ur.fromBufferAttribute(i,a),Dr.fromBufferAttribute(i,o),p.uv1=new en;const f=pn.getInterpolation(fi,yn,gn,vn,Nr,Ur,Dr,p.uv1);Br||(p.uv1=f),Gd&&(p.uv2=p.uv1)}if(t){sl.fromBufferAttribute(t,s),ol.fromBufferAttribute(t,a),al.fromBufferAttribute(t,o),p.normal=new q;const f=pn.getInterpolation(fi,yn,gn,vn,sl,ol,al,p.normal);p.normal.dot(r.direction)>0&&p.normal.multiplyScalar(-1),Br||(p.normal=f)}const m={a:s,b:a,c:o,normal:new q,materialIndex:0};if(pn.getNormal(yn,gn,vn,m.normal),p.face=m,p.faceIndex=s,Br){const f=new q;pn.getBarycoord(fi,yn,gn,vn,f),p.barycoord=f}}return p}function ll(r){return r&&r.isMaterial?r.side:r}function Lr(r,e,t,n,i,s,a){const o=n*3;let c=o+0,l=o+1,u=o+2;const{index:p,groups:m}=r;r.index&&(c=p.getX(c),l=p.getX(l),u=p.getX(u));const{position:f,normal:x,uv:w,uv1:g}=r.attributes;if(Array.isArray(e)){const v=n*3;for(let _=0,S=m.length;_<S;_++){const{start:T,count:M,materialIndex:E}=m[_];if(v>=T&&v<T+M){const P=ll(e[E]),O=cl(t,f,x,w,g,c,l,u,P,s,a);if(O)if(O.faceIndex=n,O.face.materialIndex=E,i)i.push(O);else return O}}}else{const v=ll(e),_=cl(t,f,x,w,g,c,l,u,v,s,a);if(_)if(_.faceIndex=n,_.face.materialIndex=0,i)i.push(_);else return _}return null}function Ce(r,e,t,n){const i=r.a,s=r.b,a=r.c;let o=e,c=e+1,l=e+2;t&&(o=t.getX(o),c=t.getX(c),l=t.getX(l)),i.x=n.getX(o),i.y=n.getY(o),i.z=n.getZ(o),s.x=n.getX(c),s.y=n.getY(c),s.z=n.getZ(c),a.x=n.getX(l),a.y=n.getY(l),a.z=n.getZ(l)}function Hd(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let u=n,p=n+i;u<p;u++)Lr(c,e,t,u,s,a,o)}function qd(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,u=null;for(let p=n,m=n+i;p<m;p++){let f;f=Lr(o,e,t,p,null,s,a),f&&f.distance<l&&(u=f,l=f.distance)}return u}function Xd(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let u=r,p=e+r;u<p;u++){let m;if(m=u,Ce(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function Yd(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const u=r._roots;for(let m=0,f=u.length;m<f;m++)s=u[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),p(0,l),l+=s.byteLength;function p(m,f,x=!1){const w=m*2;if(o[w+15]===Rr){const g=a[m+6],v=o[w+14];let _=1/0,S=1/0,T=1/0,M=-1/0,E=-1/0,P=-1/0;for(let O=3*g,R=3*(g+v);O<R;O++){let A=n[O];const B=i.getX(A),I=i.getY(A),U=i.getZ(A);B<_&&(_=B),B>M&&(M=B),I<S&&(S=I),I>E&&(E=I),U<T&&(T=U),U>P&&(P=U)}return c[m+0]!==_||c[m+1]!==S||c[m+2]!==T||c[m+3]!==M||c[m+4]!==E||c[m+5]!==P?(c[m+0]=_,c[m+1]=S,c[m+2]=T,c[m+3]=M,c[m+4]=E,c[m+5]=P,!0):!1}else{const g=m+8,v=a[m+6],_=g+f,S=v+f;let T=x,M=!1,E=!1;e?T||(M=e.has(_),E=e.has(S),T=!M&&!E):(M=!0,E=!0);const P=T||M,O=T||E;let R=!1;P&&(R=p(g,f,T));let A=!1;O&&(A=p(v,f,T));const B=R||A;if(B)for(let I=0;I<3;I++){const U=g+I,L=v+I,j=c[U],H=c[U+3],Q=c[L],J=c[L+3];c[m+I]=j<Q?j:Q,c[m+I+3]=H>J?H:J}return B}}}function an(r,e,t,n,i){let s,a,o,c,l,u;const p=1/t.direction.x,m=1/t.direction.y,f=1/t.direction.z,x=t.origin.x,w=t.origin.y,g=t.origin.z;let v=e[r],_=e[r+3],S=e[r+1],T=e[r+3+1],M=e[r+2],E=e[r+3+2];return p>=0?(s=(v-x)*p,a=(_-x)*p):(s=(_-x)*p,a=(v-x)*p),m>=0?(o=(S-w)*m,c=(T-w)*m):(o=(T-w)*m,c=(S-w)*m),s>c||o>a||((o>s||isNaN(s))&&(s=o),(c<a||isNaN(a))&&(a=c),f>=0?(l=(M-g)*f,u=(E-g)*f):(l=(E-g)*f,u=(M-g)*f),s>u||l>a)?!1:((l>s||s!==s)&&(s=l),(u<a||a!==a)&&(a=u),s<=i&&a>=n)}function Zd(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let u=n,p=n+i;u<p;u++){let m=l?l[u]:u;Lr(c,e,t,m,s,a,o)}}function Kd(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,u=null;for(let p=n,m=n+i;p<m;p++){let f;f=Lr(o,e,t,c?c[p]:p,null,s,a),f&&f.distance<l&&(u=f,l=f.distance)}return u}function Qd(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let u=r,p=e+r;u<p;u++){let m;if(m=t.resolveTriangleIndex(u),Ce(a,m*3,c,l),a.needsUpdate=!0,n(a,m,i,s))return!0}return!1}function $d(r,e,t,n,i,s,a){ye.setBuffer(r._roots[e]),ho(0,r,t,n,i,s,a),ye.clearBuffer()}function ho(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=ye,u=r*2;if(tt(u,c)){const p=ct(r,l),m=pt(u,c);Hd(e,t,n,p,m,i,s,a)}else{const p=ft(r);an(p,o,n,s,a)&&ho(p,e,t,n,i,s,a);const m=mt(r,l);an(m,o,n,s,a)&&ho(m,e,t,n,i,s,a)}}const ep=["x","y","z"];function tp(r,e,t,n,i,s){ye.setBuffer(r._roots[e]);const a=po(0,r,t,n,i,s);return ye.clearBuffer(),a}function po(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=ye;let l=r*2;if(tt(l,o)){const u=ct(r,c),p=pt(l,o);return qd(e,t,n,u,p,i,s)}else{const u=tl(r,c),p=ep[u],m=n.direction[p]>=0;let f,x;m?(f=ft(r),x=mt(r,c)):(f=mt(r,c),x=ft(r));const w=an(f,a,n,i,s)?po(f,e,t,n,i,s):null;if(w){const v=w.point[p];if(m?v<=a[x+u]:v>=a[x+u+3])return w}const g=an(x,a,n,i,s)?po(x,e,t,n,i,s):null;return w&&g?w.distance<=g.distance?w:g:w||g||null}}const Fr=new It,Ln=new gt,Fn=new gt,mi=new Et,ul=new Je,Vr=new Je;function np(r,e,t,n){ye.setBuffer(r._roots[e]);const i=fo(0,r,t,n);return ye.clearBuffer(),i}function fo(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=ye;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),ul.set(t.boundingBox.min,t.boundingBox.max,n),i=ul),tt(c,a)){const l=e.geometry,u=l.index,p=l.attributes.position,m=t.index,f=t.attributes.position,x=ct(r,o),w=pt(c,a);if(mi.copy(n).invert(),t.boundsTree)return be(r,s,Vr),Vr.matrix.copy(mi),Vr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:g=>Vr.intersectsBox(g),intersectsTriangle:g=>{g.a.applyMatrix4(n),g.b.applyMatrix4(n),g.c.applyMatrix4(n),g.needsUpdate=!0;for(let v=x*3,_=(w+x)*3;v<_;v+=3)if(Ce(Fn,v,u,p),Fn.needsUpdate=!0,g.intersectsTriangle(Fn))return!0;return!1}});{const g=Nn(t);for(let v=x*3,_=(w+x)*3;v<_;v+=3){Ce(Ln,v,u,p),Ln.a.applyMatrix4(mi),Ln.b.applyMatrix4(mi),Ln.c.applyMatrix4(mi),Ln.needsUpdate=!0;for(let S=0,T=g*3;S<T;S+=3)if(Ce(Fn,S,m,f),Fn.needsUpdate=!0,Ln.intersectsTriangle(Fn))return!0}}}else{const l=r+8,u=o[r+6];return be(l,s,Fr),!!(i.intersectsBox(Fr)&&fo(l,e,t,n,i)||(be(u,s,Fr),i.intersectsBox(Fr)&&fo(u,e,t,n,i)))}}const jr=new Et,mo=new Je,yi=new Je,ip=new q,rp=new q,sp=new q,op=new q;function ap(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),mo.set(e.boundingBox.min,e.boundingBox.max,t),mo.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,u=e.attributes.position,p=e.index,m=vt.getPrimitive(),f=vt.getPrimitive();let x=ip,w=rp,g=null,v=null;i&&(g=sp,v=op);let _=1/0,S=null,T=null;return jr.copy(t).invert(),yi.matrix.copy(jr),r.shapecast({boundsTraverseOrder:M=>mo.distanceToBox(M),intersectsBounds:(M,E,P)=>P<_&&P<a?(E&&(yi.min.copy(M.min),yi.max.copy(M.max),yi.needsUpdate=!0),!0):!1,intersectsRange:(M,E)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:P=>yi.distanceToBox(P),intersectsBounds:(P,O,R)=>R<_&&R<a,intersectsRange:(P,O)=>{for(let R=P,A=P+O;R<A;R++){Ce(f,3*R,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let B=M,I=M+E;B<I;B++){Ce(m,3*B,l,c),m.needsUpdate=!0;const U=m.distanceToTriangle(f,x,g);if(U<_&&(w.copy(x),v&&v.copy(g),_=U,S=B,T=R),U<s)return!0}}}});{const P=Nn(e);for(let O=0,R=P;O<R;O++){Ce(f,3*O,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let A=M,B=M+E;A<B;A++){Ce(m,3*A,l,c),m.needsUpdate=!0;const I=m.distanceToTriangle(f,x,g);if(I<_&&(w.copy(x),v&&v.copy(g),_=I,S=A,T=O),I<s)return!0}}}}}),vt.releasePrimitive(m),vt.releasePrimitive(f),_===1/0?null:(n.point?n.point.copy(w):n.point=w.clone(),n.distance=_,n.faceIndex=S,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(jr),w.applyMatrix4(jr),i.distance=w.sub(i.point).length(),i.faceIndex=T),n)}function cp(r,e=null){e&&Array.isArray(e)&&(e=new Set(e));const t=r.geometry,n=t.index?t.index.array:null,i=t.attributes.position;let s,a,o,c,l=0;const u=r._roots;for(let m=0,f=u.length;m<f;m++)s=u[m],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),p(0,l),l+=s.byteLength;function p(m,f,x=!1){const w=m*2;if(o[w+15]===Rr){const g=a[m+6],v=o[w+14];let _=1/0,S=1/0,T=1/0,M=-1/0,E=-1/0,P=-1/0;for(let O=g,R=g+v;O<R;O++){const A=3*r.resolveTriangleIndex(O);for(let B=0;B<3;B++){let I=A+B;I=n?n[I]:I;const U=i.getX(I),L=i.getY(I),j=i.getZ(I);U<_&&(_=U),U>M&&(M=U),L<S&&(S=L),L>E&&(E=L),j<T&&(T=j),j>P&&(P=j)}}return c[m+0]!==_||c[m+1]!==S||c[m+2]!==T||c[m+3]!==M||c[m+4]!==E||c[m+5]!==P?(c[m+0]=_,c[m+1]=S,c[m+2]=T,c[m+3]=M,c[m+4]=E,c[m+5]=P,!0):!1}else{const g=m+8,v=a[m+6],_=g+f,S=v+f;let T=x,M=!1,E=!1;e?T||(M=e.has(_),E=e.has(S),T=!M&&!E):(M=!0,E=!0);const P=T||M,O=T||E;let R=!1;P&&(R=p(g,f,T));let A=!1;O&&(A=p(v,f,T));const B=R||A;if(B)for(let I=0;I<3;I++){const U=g+I,L=v+I,j=c[U],H=c[U+3],Q=c[L],J=c[L+3];c[m+I]=j<Q?j:Q,c[m+I+3]=H>J?H:J}return B}}}function lp(r,e,t,n,i,s,a){ye.setBuffer(r._roots[e]),yo(0,r,t,n,i,s,a),ye.clearBuffer()}function yo(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=ye,u=r*2;if(tt(u,c)){const p=ct(r,l),m=pt(u,c);Zd(e,t,n,p,m,i,s,a)}else{const p=ft(r);an(p,o,n,s,a)&&yo(p,e,t,n,i,s,a);const m=mt(r,l);an(m,o,n,s,a)&&yo(m,e,t,n,i,s,a)}}const up=["x","y","z"];function hp(r,e,t,n,i,s){ye.setBuffer(r._roots[e]);const a=go(0,r,t,n,i,s);return ye.clearBuffer(),a}function go(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=ye;let l=r*2;if(tt(l,o)){const u=ct(r,c),p=pt(l,o);return Kd(e,t,n,u,p,i,s)}else{const u=tl(r,c),p=up[u],m=n.direction[p]>=0;let f,x;m?(f=ft(r),x=mt(r,c)):(f=mt(r,c),x=ft(r));const w=an(f,a,n,i,s)?go(f,e,t,n,i,s):null;if(w){const v=w.point[p];if(m?v<=a[x+u]:v>=a[x+u+3])return w}const g=an(x,a,n,i,s)?go(x,e,t,n,i,s):null;return w&&g?w.distance<=g.distance?w:g:w||g||null}}const Jr=new It,Vn=new gt,jn=new gt,gi=new Et,hl=new Je,Gr=new Je;function dp(r,e,t,n){ye.setBuffer(r._roots[e]);const i=vo(0,r,t,n);return ye.clearBuffer(),i}function vo(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=ye;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),hl.set(t.boundingBox.min,t.boundingBox.max,n),i=hl),tt(c,a)){const l=e.geometry,u=l.index,p=l.attributes.position,m=t.index,f=t.attributes.position,x=ct(r,o),w=pt(c,a);if(gi.copy(n).invert(),t.boundsTree)return be(r,s,Gr),Gr.matrix.copy(gi),Gr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:g=>Gr.intersectsBox(g),intersectsTriangle:g=>{g.a.applyMatrix4(n),g.b.applyMatrix4(n),g.c.applyMatrix4(n),g.needsUpdate=!0;for(let v=x,_=w+x;v<_;v++)if(Ce(jn,3*e.resolveTriangleIndex(v),u,p),jn.needsUpdate=!0,g.intersectsTriangle(jn))return!0;return!1}});{const g=Nn(t);for(let v=x,_=w+x;v<_;v++){const S=e.resolveTriangleIndex(v);Ce(Vn,3*S,u,p),Vn.a.applyMatrix4(gi),Vn.b.applyMatrix4(gi),Vn.c.applyMatrix4(gi),Vn.needsUpdate=!0;for(let T=0,M=g*3;T<M;T+=3)if(Ce(jn,T,m,f),jn.needsUpdate=!0,Vn.intersectsTriangle(jn))return!0}}}else{const l=r+8,u=o[r+6];return be(l,s,Jr),!!(i.intersectsBox(Jr)&&vo(l,e,t,n,i)||(be(u,s,Jr),i.intersectsBox(Jr)&&vo(u,e,t,n,i)))}}const Wr=new Et,So=new Je,vi=new Je,pp=new q,fp=new q,mp=new q,yp=new q;function gp(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),So.set(e.boundingBox.min,e.boundingBox.max,t),So.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,u=e.attributes.position,p=e.index,m=vt.getPrimitive(),f=vt.getPrimitive();let x=pp,w=fp,g=null,v=null;i&&(g=mp,v=yp);let _=1/0,S=null,T=null;return Wr.copy(t).invert(),vi.matrix.copy(Wr),r.shapecast({boundsTraverseOrder:M=>So.distanceToBox(M),intersectsBounds:(M,E,P)=>P<_&&P<a?(E&&(vi.min.copy(M.min),vi.max.copy(M.max),vi.needsUpdate=!0),!0):!1,intersectsRange:(M,E)=>{if(e.boundsTree){const P=e.boundsTree;return P.shapecast({boundsTraverseOrder:O=>vi.distanceToBox(O),intersectsBounds:(O,R,A)=>A<_&&A<a,intersectsRange:(O,R)=>{for(let A=O,B=O+R;A<B;A++){const I=P.resolveTriangleIndex(A);Ce(f,3*I,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let U=M,L=M+E;U<L;U++){const j=r.resolveTriangleIndex(U);Ce(m,3*j,l,c),m.needsUpdate=!0;const H=m.distanceToTriangle(f,x,g);if(H<_&&(w.copy(x),v&&v.copy(g),_=H,S=U,T=A),H<s)return!0}}}})}else{const P=Nn(e);for(let O=0,R=P;O<R;O++){Ce(f,3*O,p,u),f.a.applyMatrix4(t),f.b.applyMatrix4(t),f.c.applyMatrix4(t),f.needsUpdate=!0;for(let A=M,B=M+E;A<B;A++){const I=r.resolveTriangleIndex(A);Ce(m,3*I,l,c),m.needsUpdate=!0;const U=m.distanceToTriangle(f,x,g);if(U<_&&(w.copy(x),v&&v.copy(g),_=U,S=A,T=O),U<s)return!0}}}}}),vt.releasePrimitive(m),vt.releasePrimitive(f),_===1/0?null:(n.point?n.point.copy(w):n.point=w.clone(),n.distance=_,n.faceIndex=S,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(Wr),w.applyMatrix4(Wr),i.distance=w.sub(i.point).length(),i.faceIndex=T),n)}function vp(){return typeof SharedArrayBuffer<"u"}const Si=new ye.constructor,Hr=new ye.constructor,cn=new co(()=>new It),Jn=new It,Gn=new It,bo=new It,xo=new It;let wo=!1;function Sp(r,e,t,n){if(wo)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");wo=!0;const i=r._roots,s=e._roots;let a,o=0,c=0;const l=new Et().copy(t).invert();for(let u=0,p=i.length;u<p;u++){Si.setBuffer(i[u]),c=0;const m=cn.getPrimitive();be(0,Si.float32Array,m),m.applyMatrix4(l);for(let f=0,x=s.length;f<x&&(Hr.setBuffer(s[f]),a=Rt(0,0,t,l,n,o,c,0,0,m),Hr.clearBuffer(),c+=s[f].byteLength,!a);f++);if(cn.releasePrimitive(m),Si.clearBuffer(),o+=i[u].byteLength,a)break}return wo=!1,a}function Rt(r,e,t,n,i,s=0,a=0,o=0,c=0,l=null,u=!1){let p,m;u?(p=Hr,m=Si):(p=Si,m=Hr);const f=p.float32Array,x=p.uint32Array,w=p.uint16Array,g=m.float32Array,v=m.uint32Array,_=m.uint16Array,S=r*2,T=e*2,M=tt(S,w),E=tt(T,_);let P=!1;if(E&&M)u?P=i(ct(e,v),pt(e*2,_),ct(r,x),pt(r*2,w),c,a+e,o,s+r):P=i(ct(r,x),pt(r*2,w),ct(e,v),pt(e*2,_),o,s+r,c,a+e);else if(E){const O=cn.getPrimitive();be(e,g,O),O.applyMatrix4(t);const R=ft(r),A=mt(r,x);be(R,f,Jn),be(A,f,Gn);const B=O.intersectsBox(Jn),I=O.intersectsBox(Gn);P=B&&Rt(e,R,n,t,i,a,s,c,o+1,O,!u)||I&&Rt(e,A,n,t,i,a,s,c,o+1,O,!u),cn.releasePrimitive(O)}else{const O=ft(e),R=mt(e,v);be(O,g,bo),be(R,g,xo);const A=l.intersectsBox(bo),B=l.intersectsBox(xo);if(A&&B)P=Rt(r,O,t,n,i,s,a,o,c+1,l,u)||Rt(r,R,t,n,i,s,a,o,c+1,l,u);else if(A)if(M)P=Rt(r,O,t,n,i,s,a,o,c+1,l,u);else{const I=cn.getPrimitive();I.copy(bo).applyMatrix4(t);const U=ft(r),L=mt(r,x);be(U,f,Jn),be(L,f,Gn);const j=I.intersectsBox(Jn),H=I.intersectsBox(Gn);P=j&&Rt(O,U,n,t,i,a,s,c,o+1,I,!u)||H&&Rt(O,L,n,t,i,a,s,c,o+1,I,!u),cn.releasePrimitive(I)}else if(B)if(M)P=Rt(r,R,t,n,i,s,a,o,c+1,l,u);else{const I=cn.getPrimitive();I.copy(xo).applyMatrix4(t);const U=ft(r),L=mt(r,x);be(U,f,Jn),be(L,f,Gn);const j=I.intersectsBox(Jn),H=I.intersectsBox(Gn);P=j&&Rt(R,U,n,t,i,a,s,c,o+1,I,!u)||H&&Rt(R,L,n,t,i,a,s,c,o+1,I,!u),cn.releasePrimitive(I)}}return P}const qr=new Je,dl=new It,bp={strategy:$s,maxDepth:40,maxLeafTris:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null};class _i{static serialize(e,t={}){t={cloneBuffers:!0,...t};const n=e.geometry,i=e._roots,s=e._indirectBuffer,a=n.getIndex();let o;return t.cloneBuffers?o={roots:i.map(c=>c.slice()),index:a?a.array.slice():null,indirectBuffer:s?s.slice():null}:o={roots:i,index:a?a.array:null,indirectBuffer:s},o}static deserialize(e,t,n={}){n={setIndex:!0,indirect:!!e.indirectBuffer,...n};const{index:i,roots:s,indirectBuffer:a}=e,o=new _i(t,{...n,[no]:!0});if(o._roots=s,o._indirectBuffer=a||null,n.setIndex){const c=t.getIndex();if(c===null){const l=new ot(e.index,1,!1);t.setIndex(l)}else c.array!==i&&(c.array.set(i),c.needsUpdate=!0)}return o}get indirect(){return!!this._indirectBuffer}constructor(e,t={}){if(e.isBufferGeometry){if(e.index&&e.index.isInterleavedBufferAttribute)throw new Error("MeshBVH: InterleavedBufferAttribute is not supported for the index attribute.")}else throw new Error("MeshBVH: Only BufferGeometries are supported.");if(t=Object.assign({...bp,[no]:!1},t),t.useSharedArrayBuffer&&!vp())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=e,this._roots=null,this._indirectBuffer=null,t[no]||(Nd(this,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new It))),this.resolveTriangleIndex=t.indirect?n=>this._indirectBuffer[n]:n=>n}refit(e=null){return(this.indirect?cp:Yd)(this,e)}traverse(e,t=0){const n=this._roots[t],i=new Uint32Array(n),s=new Uint16Array(n);a(0);function a(o,c=0){const l=o*2,u=s[l+15]===Rr;if(u){const p=i[o+6],m=s[l+14];e(c,u,new Float32Array(n,o*4,6),p,m)}else{const p=o+ui/4,m=i[o+6],f=i[o+7];e(c,u,new Float32Array(n,o*4,6),f)||(a(p,c+1),a(m,c+1))}}}raycast(e,t=na,n=0,i=1/0){const s=this._roots,a=[],o=this.indirect?lp:$d;for(let c=0,l=s.length;c<l;c++)o(this,c,t,e,a,n,i);return a}raycastFirst(e,t=na,n=0,i=1/0){const s=this._roots;let a=null;const o=this.indirect?hp:tp;for(let c=0,l=s.length;c<l;c++){const u=o(this,c,t,e,n,i);u!=null&&(a==null||u.distance<a.distance)&&(a=u)}return a}intersectsGeometry(e,t){let n=!1;const i=this._roots,s=this.indirect?dp:np;for(let a=0,o=i.length;a<o&&(n=s(this,a,e,t),!n);a++);return n}shapecast(e){const t=vt.getPrimitive(),n=this.indirect?Qd:Xd;let{boundsTraverseOrder:i,intersectsBounds:s,intersectsRange:a,intersectsTriangle:o}=e;if(a&&o){const p=a;a=(m,f,x,w,g)=>p(m,f,x,w,g)?!0:n(m,f,this,o,x,w,t)}else a||(o?a=(p,m,f,x)=>n(p,m,this,o,f,x,t):a=(p,m,f)=>f);let c=!1,l=0;const u=this._roots;for(let p=0,m=u.length;p<m;p++){const f=u[p];if(c=jd(this,p,s,a,i,l),c)break;l+=f.byteLength}return vt.releasePrimitive(t),c}bvhcast(e,t,n){let{intersectsRanges:i,intersectsTriangles:s}=n;const a=vt.getPrimitive(),o=this.geometry.index,c=this.geometry.attributes.position,l=this.indirect?x=>{const w=this.resolveTriangleIndex(x);Ce(a,w*3,o,c)}:x=>{Ce(a,x*3,o,c)},u=vt.getPrimitive(),p=e.geometry.index,m=e.geometry.attributes.position,f=e.indirect?x=>{const w=e.resolveTriangleIndex(x);Ce(u,w*3,p,m)}:x=>{Ce(u,x*3,p,m)};if(s){const x=(w,g,v,_,S,T,M,E)=>{for(let P=v,O=v+_;P<O;P++){f(P),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let R=w,A=w+g;R<A;R++)if(l(R),a.needsUpdate=!0,s(a,u,R,P,S,T,M,E))return!0}return!1};if(i){const w=i;i=function(g,v,_,S,T,M,E,P){return w(g,v,_,S,T,M,E,P)?!0:x(g,v,_,S,T,M,E,P)}}else i=x}return Sp(this,e,t,i)}intersectsBox(e,t){return qr.set(e.min,e.max,t),qr.needsUpdate=!0,this.shapecast({intersectsBounds:n=>qr.intersectsBox(n),intersectsTriangle:n=>qr.intersectsTriangle(n)})}intersectsSphere(e){return this.shapecast({intersectsBounds:t=>e.intersectsBox(t),intersectsTriangle:t=>t.intersectsSphere(e)})}closestPointToGeometry(e,t,n={},i={},s=0,a=1/0){return(this.indirect?gp:ap)(this,e,t,n,i,s,a)}closestPointToPoint(e,t={},n=0,i=1/0){return Jd(this,e,t,n,i)}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(t=>{be(0,new Float32Array(t),dl),e.union(dl)}),e}}function pl(r,e,t){return r===null?null:(r.point.applyMatrix4(e.matrixWorld),r.distance=r.point.distanceTo(t.ray.origin),r.object=e,r)}const Xr=new Yl,fl=new q,ml=new Et,xp=gs.prototype.raycast,wp=Xl.prototype.raycast,yl=new q,Le=new gs,Yr=[];function _p(r,e){this.isBatchedMesh?Tp.call(this,r,e):Mp.call(this,r,e)}function Tp(r,e){if(this.boundsTrees){const t=this.boundsTrees,n=this._drawInfo||this._instanceInfo,i=this._drawRanges||this._geometryInfo,s=this.matrixWorld;Le.material=this.material,Le.geometry=this.geometry;const a=Le.geometry.boundsTree,o=Le.geometry.drawRange;Le.geometry.boundingSphere===null&&(Le.geometry.boundingSphere=new ql);for(let c=0,l=n.length;c<l;c++){if(!this.getVisibleAt(c))continue;const u=n[c].geometryIndex;if(Le.geometry.boundsTree=t[u],this.getMatrixAt(c,Le.matrixWorld).premultiply(s),!Le.geometry.boundsTree){this.getBoundingBoxAt(u,Le.geometry.boundingBox),this.getBoundingSphereAt(u,Le.geometry.boundingSphere);const p=i[u];Le.geometry.setDrawRange(p.start,p.count)}Le.raycast(r,Yr);for(let p=0,m=Yr.length;p<m;p++){const f=Yr[p];f.object=this,f.batchId=c,e.push(f)}Yr.length=0}Le.geometry.boundsTree=a,Le.geometry.drawRange=o,Le.material=null,Le.geometry=null}else wp.call(this,r,e)}function Mp(r,e){if(this.geometry.boundsTree){if(this.material===void 0)return;ml.copy(this.matrixWorld).invert(),Xr.copy(r.ray).applyMatrix4(ml),yl.setFromMatrixScale(this.matrixWorld),fl.copy(Xr.direction).multiply(yl);const t=fl.length(),n=r.near/t,i=r.far/t,s=this.geometry.boundsTree;if(r.firstHitOnly===!0){const a=pl(s.raycastFirst(Xr,this.material,n,i),this,r);a&&e.push(a)}else{const a=s.raycast(Xr,this.material,n,i);for(let o=0,c=a.length;o<c;o++){const l=pl(a[o],this,r);l&&e.push(l)}}}else xp.call(this,r,e)}function Cp(r={}){return this.boundsTree=new _i(this,r),this.boundsTree}const Sn=new q,bn=new q,xn=new q,gl=new vs,Zr=new q,_o=new q,vl=new vs,Sl=new vs,Kr=new Et,bl=new Et;function bi(r,e){if(!r&&!e)return;const t=r.count===e.count,n=r.normalized===e.normalized,i=r.array.constructor===e.array.constructor,s=r.itemSize===e.itemSize;if(!t||!n||!i||!s)throw new Error}function xi(r,e=null){const t=r.array.constructor,n=r.normalized,i=r.itemSize,s=e===null?r.count:e;return new ot(new t(i*s),i,n)}function xl(r,e,t=0){if(r.isInterleavedBufferAttribute){const n=r.itemSize;for(let i=0,s=r.count;i<s;i++){const a=i+t;e.setX(a,r.getX(i)),n>=2&&e.setY(a,r.getY(i)),n>=3&&e.setZ(a,r.getZ(i)),n>=4&&e.setW(a,r.getW(i))}}else{const n=e.array,i=n.constructor,s=n.BYTES_PER_ELEMENT*r.itemSize*t;new i(n.buffer,s,r.array.length).set(r.array)}}function Ep(r,e,t){const n=r.elements,i=e.elements;for(let s=0,a=i.length;s<a;s++)n[s]+=i[s]*t}function wl(r,e,t){const n=r.skeleton,i=r.geometry,s=n.bones,a=n.boneInverses;vl.fromBufferAttribute(i.attributes.skinIndex,e),Sl.fromBufferAttribute(i.attributes.skinWeight,e),Kr.elements.fill(0);for(let o=0;o<4;o++){const c=Sl.getComponent(o);if(c!==0){const l=vl.getComponent(o);bl.multiplyMatrices(s[l].matrixWorld,a[l]),Ep(Kr,bl,c)}}return Kr.multiply(r.bindMatrix).premultiply(r.bindMatrixInverse),t.transformDirection(Kr),t}function To(r,e,t,n,i){Zr.set(0,0,0);for(let s=0,a=r.length;s<a;s++){const o=e[s],c=r[s];o!==0&&(_o.fromBufferAttribute(c,n),t?Zr.addScaledVector(_o,o):Zr.addScaledVector(_o.sub(i),o))}i.add(Zr)}function Pp(r,e={useGroups:!1,updateIndex:!1,skipAttributes:[]},t=new Kn){const n=r[0].index!==null,{useGroups:i=!1,updateIndex:s=!1,skipAttributes:a=[]}=e,o=new Set(Object.keys(r[0].attributes)),c={};let l=0;t.clearGroups();for(let u=0;u<r.length;++u){const p=r[u];let m=0;if(n!==(p.index!==null))throw new Error("StaticGeometryGenerator: All geometries must have compatible attributes; make sure index attribute exists among all geometries, or in none of them.");for(const f in p.attributes){if(!o.has(f))throw new Error('StaticGeometryGenerator: All geometries must have compatible attributes; make sure "'+f+'" attribute exists among all geometries, or in none of them.');c[f]===void 0&&(c[f]=[]),c[f].push(p.attributes[f]),m++}if(m!==o.size)throw new Error("StaticGeometryGenerator: Make sure all geometries have the same number of attributes.");if(i){let f;if(n)f=p.index.count;else if(p.attributes.position!==void 0)f=p.attributes.position.count;else throw new Error("StaticGeometryGenerator: The geometry must have either an index or a position attribute");t.addGroup(l,f,u),l+=f}}if(n){let u=!1;if(!t.index){let p=0;for(let m=0;m<r.length;++m)p+=r[m].index.count;t.setIndex(new ot(new Uint32Array(p),1,!1)),u=!0}if(s||u){const p=t.index;let m=0,f=0;for(let x=0;x<r.length;++x){const w=r[x],g=w.index;if(a[x]!==!0)for(let v=0;v<g.count;++v)p.setX(m,g.getX(v)+f),m++;f+=w.attributes.position.count}}}for(const u in c){const p=c[u];if(!(u in t.attributes)){let x=0;for(const w in p)x+=p[w].count;t.setAttribute(u,xi(c[u][0],x))}const m=t.attributes[u];let f=0;for(let x=0,w=p.length;x<w;x++){const g=p[x];a[x]!==!0&&xl(g,m,f),f+=g.count}}return t}function kp(r,e){if(r===null||e===null)return r===e;if(r.length!==e.length)return!1;for(let t=0,n=r.length;t<n;t++)if(r[t]!==e[t])return!1;return!0}function Rp(r){const{index:e,attributes:t}=r;if(e)for(let n=0,i=e.count;n<i;n+=3){const s=e.getX(n),a=e.getX(n+2);e.setX(n,a),e.setX(n+2,s)}else for(const n in t){const i=t[n],s=i.itemSize;for(let a=0,o=i.count;a<o;a+=3)for(let c=0;c<s;c++){const l=i.getComponent(a,c),u=i.getComponent(a+2,c);i.setComponent(a,c,u),i.setComponent(a+2,c,l)}}return r}class Ap{constructor(e){this.matrixWorld=new Et,this.geometryHash=null,this.boneMatrices=null,this.primitiveCount=-1,this.mesh=e,this.update()}update(){const e=this.mesh,t=e.geometry,n=e.skeleton,i=(t.index?t.index.count:t.attributes.position.count)/3;if(this.matrixWorld.copy(e.matrixWorld),this.geometryHash=t.attributes.position.version,this.primitiveCount=i,n){n.boneTexture||n.computeBoneTexture(),n.update();const s=n.boneMatrices;!this.boneMatrices||this.boneMatrices.length!==s.length?this.boneMatrices=s.slice():this.boneMatrices.set(s)}else this.boneMatrices=null}didChange(){const e=this.mesh,t=e.geometry,n=(t.index?t.index.count:t.attributes.position.count)/3;return!(this.matrixWorld.equals(e.matrixWorld)&&this.geometryHash===t.attributes.position.version&&kp(e.skeleton&&e.skeleton.boneMatrices||null,this.boneMatrices)&&this.primitiveCount===n)}}class Op{constructor(e){Array.isArray(e)||(e=[e]);const t=[];e.forEach(n=>{n.traverseVisible(i=>{i.isMesh&&t.push(i)})}),this.meshes=t,this.useGroups=!0,this.applyWorldTransforms=!0,this.attributes=["position","normal","color","tangent","uv","uv2"],this._intermediateGeometry=new Array(t.length).fill().map(()=>new Kn),this._diffMap=new WeakMap}getMaterials(){const e=[];return this.meshes.forEach(t=>{Array.isArray(t.material)?e.push(...t.material):e.push(t.material)}),e}generate(e=new Kn){let t=[];const{meshes:n,useGroups:i,_intermediateGeometry:s,_diffMap:a}=this;for(let o=0,c=n.length;o<c;o++){const l=n[o],u=s[o],p=a.get(l);!p||p.didChange(l)?(this._convertToStaticGeometry(l,u),t.push(!1),p?p.update():a.set(l,new Ap(l))):t.push(!0)}if(s.length===0){e.setIndex(null);const o=e.attributes;for(const c in o)e.deleteAttribute(c);for(const c in this.attributes)e.setAttribute(this.attributes[c],new ot(new Float32Array(0),4,!1))}else Pp(s,{useGroups:i,skipAttributes:t},e);for(const o in e.attributes)e.attributes[o].needsUpdate=!0;return e}_convertToStaticGeometry(e,t=new Kn){const n=e.geometry,i=this.applyWorldTransforms,s=this.attributes.includes("normal"),a=this.attributes.includes("tangent"),o=n.attributes,c=t.attributes;!t.index&&n.index&&(t.index=n.index.clone()),c.position||t.setAttribute("position",xi(o.position)),s&&!c.normal&&o.normal&&t.setAttribute("normal",xi(o.normal)),a&&!c.tangent&&o.tangent&&t.setAttribute("tangent",xi(o.tangent)),bi(n.index,t.index),bi(o.position,c.position),s&&bi(o.normal,c.normal),a&&bi(o.tangent,c.tangent);const l=o.position,u=s?o.normal:null,p=a?o.tangent:null,m=n.morphAttributes.position,f=n.morphAttributes.normal,x=n.morphAttributes.tangent,w=n.morphTargetsRelative,g=e.morphTargetInfluences,v=new Zl;v.getNormalMatrix(e.matrixWorld),n.index&&t.index.array.set(n.index.array);for(let _=0,S=o.position.count;_<S;_++)Sn.fromBufferAttribute(l,_),u&&bn.fromBufferAttribute(u,_),p&&(gl.fromBufferAttribute(p,_),xn.fromBufferAttribute(p,_)),g&&(m&&To(m,g,w,_,Sn),f&&To(f,g,w,_,bn),x&&To(x,g,w,_,xn)),e.isSkinnedMesh&&(e.applyBoneTransform(_,Sn),u&&wl(e,_,bn),p&&wl(e,_,xn)),i&&Sn.applyMatrix4(e.matrixWorld),c.position.setXYZ(_,Sn.x,Sn.y,Sn.z),u&&(i&&bn.applyNormalMatrix(v),c.normal.setXYZ(_,bn.x,bn.y,bn.z)),p&&(i&&xn.transformDirection(e.matrixWorld),c.tangent.setXYZW(_,xn.x,xn.y,xn.z,gl.w));for(const _ in this.attributes){const S=this.attributes[_];S==="position"||S==="tangent"||S==="normal"||!(S in o)||(c[S]||t.setAttribute(S,xi(o[S])),bi(o[S],c[S]),xl(o[S],c[S]))}return e.matrixWorld.determinant()<0&&Rp(t),t}}const Ip=Object.freeze(Object.defineProperty({__proto__:null,AVERAGE:Hc,CENTER:$s,CONTAINED:eo,ExtendedTriangle:gt,MeshBVH:_i,OrientedBox:Je,SAH:qc,StaticGeometryGenerator:Op,acceleratedRaycast:_p,computeBoundsTree:Cp},Symbol.toStringTag,{value:"Module"}));class zp{constructor(e){this.name="WorkerBase",this.running=!1,this.worker=e,this.worker.onerror=t=>{throw t.message?new Error(`${this.name}: Could not create Web Worker with error "${t.message}"`):new Error(`${this.name}: Could not create Web Worker.`)}}runTask(){}generate(...e){if(this.running)throw new Error("GenerateMeshBVHWorker: Already running job.");if(this.worker===null)throw new Error("GenerateMeshBVHWorker: Worker has been disposed.");this.running=!0;const t=this.runTask(this.worker,...e);return t.finally(()=>{this.running=!1}),t}dispose(){this.worker.terminate(),this.worker=null}}const St={node:"node",material:"material",camera:"camera",light:"light"},wn="KHR_animation_pointer",Bp={CUBICSPLINE:void 0,LINEAR:ia,STEP:Ql};class Np{constructor(e){this.name=wn,this.parser=e,this.animationPointerResolver=null}setAnimationPointerResolver(e){return this.animationPointerResolver=e,this}loadAnimationTargetFromChannel(e){const t=e.target,n=t.node!==void 0?t.node:t.id;return this.parser.getDependency("node",n)}loadAnimationTargetFromChannelWithAnimationPointer(e){Dp();const t=e.target,n=t.extensions&&t.extensions[wn]&&t.path&&t.path==="pointer";if(!n)return null;let i,s=St.node,a;if(n){const c=t.extensions[wn];let l=c.pointer;if(!l){console.warn("Invalid path",c,t);return}if(l.startsWith("/materials/")?s=St.material:l.startsWith("/extensions/KHR_lights_punctual/lights/")?s=St.light:l.startsWith("/cameras/")&&(s=St.camera),a=this._tryResolveTargetId(l,s),a===null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,l);return}switch(s){case St.material:const u=("/materials/"+a.toString()+"/").length,p=l.substring(0,u);switch(i=l.substring(u),i){case"pbrMetallicRoughness/baseColorFactor":i="color";break;case"pbrMetallicRoughness/roughnessFactor":i="roughness";break;case"pbrMetallicRoughness/metallicFactor":i="metalness";break;case"emissiveFactor":i="emissive";break;case"alphaCutoff":i="alphaTest";break;case"occlusionTexture/strength":i="aoMapIntensity";break;case"normalTexture/scale":i="normalScale";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/scale":i="map/repeat";break;case"pbrMetallicRoughness/baseColorTexture/extensions/KHR_texture_transform/offset":i="map/offset";break;case"emissiveTexture/extensions/KHR_texture_transform/scale":i="emissiveMap/repeat";break;case"emissiveTexture/extensions/KHR_texture_transform/offset":i="emissiveMap/offset";break;case"extensions/KHR_materials_emissive_strength/emissiveStrength":i="emissiveIntensity";break;case"extensions/KHR_materials_transmission/transmissionFactor":i="transmission";break;case"extensions/KHR_materials_ior/ior":i="ior";break;case"extensions/KHR_materials_volume/thicknessFactor":i="thickness";break;case"extensions/KHR_materials_volume/attenuationColor":i="attenuationColor";break;case"extensions/KHR_materials_volume/attenuationDistance":i="attenuationDistance";break;case"extensions/KHR_materials_iridescence/iridescenceFactor":i="iridescence";break;case"extensions/KHR_materials_iridescence/iridescenceIor":i="iridescenceIOR";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMinimum":i="iridescenceThicknessRange[0]";break;case"extensions/KHR_materials_iridescence/iridescenceThicknessMaximum":i="iridescenceThicknessRange[1]";break;case"extensions/KHR_materials_clearcoat/clearcoatFactor":i="clearcoat";break;case"extensions/KHR_materials_clearcoat/clearcoatRoughnessFactor":i="clearcoatRoughness";break;case"extensions/KHR_materials_sheen/sheenColorFactor":i="sheenColor";break;case"extensions/KHR_materials_sheen/sheenRoughnessFactor":i="sheenRoughness";break;case"extensions/KHR_materials_specular/specularFactor":i="specularIntensity";break;case"extensions/KHR_materials_specular/specularColorFactor":i="specularColor";break}l=p+i;break;case St.node:const m=("/nodes/"+a.toString()+"/").length,f=l.substring(0,m);switch(i=l.substring(m),i){case"translation":i="position";break;case"rotation":i="quaternion";break;case"scale":i="scale";break;case"weights":i="morphTargetInfluences";break;case"extensions/KHR_node_visibility/visible":i="visible";break}l=f+i;break;case St.light:const x=("/extensions/KHR_lights_punctual/lights/"+a.toString()+"/").length;switch(i=l.substring(x),i){case"color":break;case"intensity":break;case"spot/innerConeAngle":i="penumbra";break;case"spot/outerConeAngle":i="angle";break;case"range":i="distance";break}l="/lights/"+a.toString()+"/"+i;break;case St.camera:const w=("/cameras/"+a.toString()+"/").length,g=l.substring(0,w);switch(i=l.substring(w),i){case"perspective/yfov":i="fov";break;case"perspective/znear":case"orthographic/znear":i="near";break;case"perspective/zfar":case"orthographic/zfar":i="far";break;case"perspective/aspect":i="aspect";break;case"orthographic/xmag":i="zoom";break;case"orthographic/ymag":i="zoom";break}l=g+i;break}this.animationPointerResolver?.resolvePath&&(l=this.animationPointerResolver.resolvePath(l)),t.extensions[wn].pointer=l}if(a==null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,t);return}let o;return s===St.node?o=this.parser.getDependency("node",a):s===St.material?o=this.parser.getDependency("material",a):s===St.light?o=this.parser.getDependency("light",a):s===St.camera?o=this.parser.getDependency("camera",a):console.error("Unhandled type",s),o}createAnimationTracksWithAnimationPointer(e,t,n,i,s){if(!(s.extensions&&s.extensions[wn]&&s.path&&s.path==="pointer"))return null;let a=s.extensions[wn].pointer;if(!a)return null;const o=[];a=a.replaceAll("/",".");const c=a.split(".");var l=e.name!==void 0&&e.name!==null?e.name:e.uuid;if(c[2]=l,c[3]==="morphTargetInfluences"&&e.type==="Group"){for(const m of e.children)m instanceof Kl&&m.morphTargetInfluences&&(c[3]=m.name,c[4]="morphTargetInfluences",p(this.parser));return o}p(this.parser);function u(m,f){try{const x=f.split(".").filter(Boolean),w=x[x.length-1].replace(/\[.*\]$/,"");return w in m?typeof m[w]=="boolean":!1}catch{return!1}}function p(m){a=c.join(".");let f,x=!1;switch(n.itemSize){case 1:Object.prototype.toString.call(n.array)==="[object Uint8Array]"&&u(e,a)?(f=iu,x=!0):f=ru;break;case 2:case 3:f=nu;break;case 4:a.endsWith(".quaternion")?f=eu:f=tu;break}if(!f){console.warn("Unsupported output accessor format",n);return}const w=i.interpolation!==void 0?Bp[i.interpolation]:ia;let g=m._getArrayFromAccessor(n);a.endsWith(".fov")&&(g=g.map(_=>_/Math.PI*180)),x&&(g=g.map(_=>_>0));const v=new f(a,t.array,g,w);if(w==="CUBICSPLINE"&&m._createCubicSplineTrackInterpolant(v),o.push(v),a&&n.itemSize===4&&a.startsWith(".materials.")&&a.endsWith(".color")){const _=new Float32Array(g.length/4);for(let T=0,M=g.length/4;T<M;T+=1)_[T]=g[T*4+3];const S=new f(a.replace(".color",".opacity"),t.array,_,w);w==="CUBICSPLINE"&&m._createCubicSplineTrackInterpolant(v),o.push(S)}}return o}_tryResolveTargetId(e,t){let n="";return t==="node"?n=e.substring(7):t==="material"?n=e.substring(11):t==="light"?n=e.substring(39):t==="camera"&&(n=e.substring(9)),n=n.substring(0,n.indexOf("/")),Number.parseInt(n)}loadAnimation(e){const t=this,n=this.parser.json,i=this.parser,s=n.animations[e],a=s.name?s.name:"animation_"+e,o=[],c=[],l=[],u=[],p=[];for(let m=0,f=s.channels.length;m<f;m++){const x=s.channels[m],w=s.samplers[x.sampler],g=x.target,v=s.parameters!==void 0?s.parameters[w.input]:w.input,_=s.parameters!==void 0?s.parameters[w.output]:w.output;let S=t.loadAnimationTargetFromChannelWithAnimationPointer(x);S||(S=t.loadAnimationTargetFromChannel(x)),o.push(S),c.push(i.getDependency("accessor",v)),l.push(i.getDependency("accessor",_)),u.push(w),p.push(g)}return Promise.all([Promise.all(o),Promise.all(c),Promise.all(l),Promise.all(u),Promise.all(p)]).then(function(m){const f=m[0],x=m[1],w=m[2],g=m[3],v=m[4],_=[];for(let S=0,T=f.length;S<T;S++){const M=f[S],E=x[S],P=w[S],O=g[S],R=v[S];if(M===void 0)continue;M.updateMatrix&&(M.updateMatrix(),M.matrixAutoUpdate=!0);let A=t.createAnimationTracksWithAnimationPointer(M,E,P,O,R);if(A||(A=i._createAnimationTracks(M,E,P,O,R)),A)for(let B=0;B<A.length;B++)_.push(A[B])}return new $l(a,void 0,_)})}}let _l=!1,Up=null;function Dp(){if(_l)return;_l=!0;const r=Up||=ra.findNode;ra.findNode=function(e,t){if(!t)return r(e,t);if(t.startsWith(".materials.")){const n=t.substring(11).substring(t.indexOf(".")),i=n.indexOf("."),s=i<0?n:n.substring(0,i);let a=null;return e.traverse(o=>{a!==null||o.type!=="Mesh"&&o.type!=="SkinnedMesh"||o.material&&(o.material.uuid===s||o.material.name===s)&&(a=o.material,a!==null&&(n.endsWith(".map")?a=a.map:n.endsWith(".emissiveMap")&&(a=a.emissiveMap)))}),a}else if(t.startsWith(".nodes.")||t.startsWith(".lights.")||t.startsWith(".cameras.")){const n=t.split(".");let i;for(let s=1;s<n.length;s++){const a=n[s];if(a.length==36)i=e.getObjectByProperty("uuid",a);else if(i&&i[a]){const o=Number.parseInt(a);let c=a;o>=0&&(c=o),i=i[c]}else{const o=e.getObjectByName(a);o&&(i=o)}}if(!i){const s=r(e,n[2]);return s||console.warn(wn+": Property binding not found",t,e,e.name,n),s}return i}return r(e,t)}}const Lp=Object.freeze(Object.defineProperty({__proto__:null,GLTFAnimationPointerExtension:Np},Symbol.toStringTag,{value:"Module"}));export{wc as $70d766613f57b014$export$2e2bcd8739ae039,fd as BatchedParticleRenderer,Mo as Builder,wi as ByteBuffer,Tn as ConstantColor,ne as ConstantValue,At as Matrix4,_i as MeshBVH,hu as MotionController,ts as ParticleSystem,V as RenderMode,oa as SIZE_PREFIX_LENGTH,Cr as TrailParticle,nt as Vector4,zp as WorkerBase,Ju as bundler,yd as createNoise4D,ou as fetchProfile,wd as index,Ip as index$1,Lp as index$2,sh as md5,eh as v5};