@needle-tools/engine 4.10.0-beta.5 → 4.10.0-beta.9
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.
- package/CHANGELOG.md +6 -1
- package/README.md +2 -1
- package/dist/{needle-engine.bundle-DcvMQ1Nq.js → needle-engine.bundle-B_wUQWD9.js} +19 -18
- package/dist/{needle-engine.bundle-DzVytSSo.umd.cjs → needle-engine.bundle-CrO5PE4u.umd.cjs} +11 -11
- package/dist/{needle-engine.bundle-BGVvfSfQ.min.js → needle-engine.bundle-DjiUOI9O.min.js} +11 -11
- package/dist/needle-engine.js +331 -332
- package/dist/needle-engine.min.js +1 -1
- package/dist/needle-engine.umd.cjs +1 -1
- package/dist/vendor-CPuBPspY.umd.cjs +1121 -0
- package/dist/vendor-DPCU8cUF.min.js +1121 -0
- package/dist/vendor-MBoqSyFm.js +16240 -0
- package/lib/engine/codegen/register_types.js +1 -1
- package/lib/engine/codegen/register_types.js.map +1 -1
- package/lib/engine/engine_license.js +1 -1
- package/lib/engine/engine_license.js.map +1 -1
- package/lib/engine-components/codegen/components.d.ts +1 -1
- package/lib/engine-components/codegen/components.js +1 -1
- package/lib/engine-components/codegen/components.js.map +1 -1
- package/lib/engine-components/timeline/TimelineTracks.js +2 -4
- package/lib/engine-components/timeline/TimelineTracks.js.map +1 -1
- package/lib/engine-components/web/ScrollFollow.d.ts +1 -0
- package/lib/engine-components/web/ScrollFollow.js +2 -0
- package/lib/engine-components/web/ScrollFollow.js.map +1 -1
- package/lib/engine-components/web/ViewBox.js +1 -1
- package/lib/engine-components/web/ViewBox.js.map +1 -1
- package/package.json +2 -1
- package/src/engine/codegen/register_types.ts +1 -1
- package/src/engine/engine_license.ts +1 -1
- package/src/engine-components/codegen/components.ts +1 -1
- package/src/engine-components/timeline/TimelineTracks.ts +2 -4
- package/src/engine-components/web/ScrollFollow.ts +3 -2
- package/src/engine-components/web/ViewBox.ts +1 -1
- package/dist/vendor-D0Yvltn9.umd.cjs +0 -1121
- package/dist/vendor-DU8tJyl_.js +0 -14366
- package/dist/vendor-JyrX4DVM.min.js +0 -1121
|
@@ -0,0 +1,1121 @@
|
|
|
1
|
+
"use strict";const R=require("./three-B-jwTHao.umd.cjs"),Re={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 Va(r){const e=await fetch(r);if(e.ok)return e.json();throw new Error(e.statusText)}async function hl(r){return await Va(`${r}/profilesList.json`)}async function fl(r,e,t=null,n=!0){if(!r)throw new Error("No xrInputSource supplied");const i=await hl(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 Va(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 dl={xAxis:0,yAxis:0,button:0,state:Re.ComponentState.DEFAULT};function pl(r=0,e=0){let t=r,n=e;if(Math.sqrt(r*r+e*e)>1){const a=Math.atan2(e,r);t=Math.cos(a),n=Math.sin(a)}return{normalizedXAxis:t*.5+.5,normalizedYAxis:n*.5+.5}}class ml{constructor(e){this.componentProperty=e.componentProperty,this.states=e.states,this.valueNodeName=e.valueNodeName,this.valueNodeProperty=e.valueNodeProperty,this.valueNodeProperty===Re.VisualResponseProperty.TRANSFORM&&(this.minNodeName=e.minNodeName,this.maxNodeName=e.maxNodeName),this.value=0,this.updateFromComponent(dl)}updateFromComponent({xAxis:e,yAxis:t,button:n,state:i}){const{normalizedXAxis:s,normalizedYAxis:a}=pl(e,t);switch(this.componentProperty){case Re.ComponentProperty.X_AXIS:this.value=this.states.includes(i)?s:.5;break;case Re.ComponentProperty.Y_AXIS:this.value=this.states.includes(i)?a:.5;break;case Re.ComponentProperty.BUTTON:this.value=this.states.includes(i)?n:0;break;case Re.ComponentProperty.STATE:this.valueNodeProperty===Re.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 yl{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 ml(t.visualResponses[n]);this.visualResponses[n]=i}),this.gamepadIndices=Object.assign({},t.gamepadIndices),this.values={state:Re.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=Re.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=Re.ComponentState.PRESSED:(t.touched||this.values.button>Re.ButtonTouchThreshold)&&(this.values.state=Re.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===Re.ComponentState.DEFAULT&&Math.abs(this.values.xAxis)>Re.AxisTouchThreshold&&(this.values.state=Re.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===Re.ComponentState.DEFAULT&&Math.abs(this.values.yAxis)>Re.AxisTouchThreshold&&(this.values.state=Re.ComponentState.TOUCHED)),Object.values(this.visualResponses).forEach(t=>{t.updateFromComponent(this.values)})}}class gl{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 yl(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 ts=2,Rt=4,Vt=4,Ja=4,Xt=new Int32Array(2),No=new Float32Array(Xt.buffer),Uo=new Float64Array(Xt.buffer),Xi=new Uint16Array(new Uint8Array([1,0]).buffer)[0]===1;class jt{constructor(e,t){this.low=e|0,this.high=t|0}static create(e,t){return e==0&&t==0?jt.ZERO:new jt(e,t)}toFloat64(){return(this.low>>>0)+this.high*4294967296}equals(e){return this.low==e.low&&this.high==e.high}}jt.ZERO=new jt(0,0);var zs;(function(r){r[r.UTF8_BYTES=1]="UTF8_BYTES",r[r.UTF16_STRING=2]="UTF16_STRING"})(zs||(zs={}));class si{constructor(e){this.bytes_=e,this.position_=0}static allocate(e){return new si(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 jt(this.readInt32(e),this.readInt32(e+4))}readUint64(e){return new jt(this.readUint32(e),this.readUint32(e+4))}readFloat32(e){return Xt[0]=this.readInt32(e),No[0]}readFloat64(e){return Xt[Xi?0:1]=this.readInt32(e),Xt[Xi?1:0]=this.readInt32(e+4),Uo[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){No[0]=t,this.writeInt32(e,Xt[0])}writeFloat64(e,t){Uo[0]=t,this.writeInt32(e,Xt[Xi?0:1]),this.writeInt32(e+4,Xt[Xi?1:0])}getBufferIdentifier(){if(this.bytes_.length<this.position_+Rt+Vt)throw new Error("FlatBuffers: ByteBuffer is too short to contain an identifier.");let e="";for(let t=0;t<Vt;t++)e+=String.fromCharCode(this.readInt8(this.position_+Rt+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+=Rt,t===zs.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)+Rt}__vector_len(e){return this.readInt32(e+this.readInt32(e))}__has_identifier(e){if(e.length!=Vt)throw new Error("FlatBuffers: file identifier must be length "+Vt);for(let t=0;t<Vt;t++)if(e.charCodeAt(t)!=this.readInt8(this.position()+Rt+t))return!1;return!0}createLong(e,t){return jt.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 to{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=si.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=to.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=si.allocate(n);return i.setPosition(n-t),i.bytes().set(e.bytes(),n-t),i}addOffset(e){this.prep(Rt,0),this.writeInt32(this.offset()-e+Rt)}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)*ts;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=ts;l<s;l+=ts)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?Ja:0;if(t){const s=t;if(this.prep(this.minalign,Rt+Vt+i),s.length!=Vt)throw new Error("FlatBuffers: file identifier must be length "+Vt);for(let a=Vt-1;a>=0;a--)this.writeInt8(s.charCodeAt(a))}this.prep(this.minalign,Rt+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(Rt,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 jt.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 Nr(r){return r&&r.__esModule&&Object.prototype.hasOwnProperty.call(r,"default")?r.default:r}var ns={exports:{}},Do;function Fo(){return Do||(Do=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})(ns)),ns.exports}var is,Lo;function vl(){if(Lo)return is;Lo=1;var r=Fo().BufferBuilder,e=Fo().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}};is=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="",f,p;l<o;)f=c[l],f<128?(u+=String.fromCharCode(f),l++):(f^192)<32?(p=(f^192)<<6|c[l+1]&63,u+=String.fromCharCode(p),l+=2):(p=(f&15)<<12|(c[l+1]&63)<<6|c[l+2]&63,u+=String.fromCharCode(p),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(),f=this.unpack();c[u]=f}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,f=o&1048575|1048576,p=f*Math.pow(2,u-20)+c*Math.pow(2,u-52);return(l===0?1:-1)*p},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,f=Math.floor(u*Math.pow(2,52)),p=Math.pow(2,32),m=c<<31|l+1023<<20|f/p&1048575,x=f%p;this.bufferBuilder.append(203),this.pack_int32(m),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 is}var Sl=vl();const Vo=Nr(Sl);let ja=!0,Ga=!0;function Zn(r,e,t){const n=r.match(e);return n&&n.length>=t&&parseInt(n[t],10)}function Bn(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 xl(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(ja=r,r?"adapter.js logging disabled":"adapter.js logging enabled")}function _l(r){return typeof r!="boolean"?new Error("Argument type: "+typeof r+". Please use a boolean."):(Ga=!r,"adapter.js deprecation warnings "+(r?"disabled":"enabled"))}function no(){if(typeof window=="object"){if(ja)return;typeof console<"u"&&typeof console.log=="function"&&console.log.apply(console,arguments)}}function Ur(r,e){Ga&&console.warn(r+" is deprecated, please use "+e+" instead.")}function bl(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=Zn(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia||r.isSecureContext===!1&&r.webkitRTCPeerConnection&&!r.RTCIceGatherer)e.browser="chrome",e.version=Zn(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))e.browser="edge",e.version=Zn(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else if(r.RTCPeerConnection&&t.userAgent.match(/AppleWebKit\/(\d+)\./))e.browser="safari",e.version=Zn(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 Jo(r){return Object.prototype.toString.call(r)==="[object Object]"}function $a(r){return Jo(r)?Object.keys(r).reduce(function(e,t){const n=Jo(r[t]),i=n?$a(r[t]):r[t],s=n&&!Object.keys(i).length;return i===void 0||s?e:Object.assign(e,{[t]:i})},{}):r}function Is(r,e,t){!e||t.has(e.id)||(t.set(e.id,e),Object.keys(e).forEach(n=>{n.endsWith("Id")?Is(r,r.get(e[n]),t):n.endsWith("Ids")&&e[n].forEach(i=>{Is(r,r.get(i),t)})}))}function jo(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&&Is(r,o,i)})}),i}const Go=no;function Wa(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 f=function(p,m){return p?p+m.charAt(0).toUpperCase()+m.slice(1):m==="deviceId"?"sourceId":m};if(u.ideal!==void 0){c.optional=c.optional||[];let p={};typeof u.ideal=="number"?(p[f("min",l)]=u.ideal,c.optional.push(p),p={},p[f("max",l)]=u.ideal,c.optional.push(p)):(p[f("",l)]=u.ideal,c.optional.push(p))}u.exact!==void 0&&typeof u.exact!="number"?(c.mandatory=c.mandatory||{},c.mandatory[f("",l)]=u.exact):["min","max"].forEach(p=>{u[p]!==void 0&&(c.mandatory=c.mandatory||{},c.mandatory[f(p,l)]=u[p])})}),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,f,p){f in u&&!(p in u)&&(u[p]=u[f],delete u[f])};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 f;if(l.exact==="environment"||l.ideal==="environment"?f=["back","rear"]:(l.exact==="user"||l.ideal==="user")&&(f=["front"]),f)return t.mediaDevices.enumerateDevices().then(p=>{p=p.filter(x=>x.kind==="videoinput");let m=p.find(x=>f.some(T=>x.label.toLowerCase().includes(T)));return!m&&p.length&&f.includes("back")&&(m=p[p.length-1]),m&&(o.video.deviceId=l.exact?{exact:m.deviceId}:{ideal:m.deviceId}),o.video=n(o.video),Go("chrome: "+JSON.stringify(o)),c(o)})}o.video=n(o.video)}return Go("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,f=>{l&&l(s(f))})})};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(f=>{f.stop()}),new DOMException("","NotFoundError");return u},u=>Promise.reject(s(u))))})}}function Tl(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(n){return e(n).then(i=>{const s=n.video&&n.video.width,a=n.video&&n.video.height,o=n.video&&n.video.frameRate;return n.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:i,maxFrameRate:o||3}},s&&(n.video.mandatory.maxWidth=s),a&&(n.video.mandatory.maxHeight=a),r.navigator.mediaDevices.getUserMedia(n)})}}}function Ha(r){r.MediaStream=r.MediaStream||r.webkitMediaStream}function qa(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=n=>{n.stream.addEventListener("addtrack",i=>{let s;r.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(o=>o.track&&o.track.id===i.track.id):s={track:i.track};const a=new Event("track");a.track=i.track,a.receiver=s,a.transceiver={receiver:s},a.streams=[n.stream],this.dispatchEvent(a)}),n.stream.getTracks().forEach(i=>{let s;r.RTCPeerConnection.prototype.getReceivers?s=this.getReceivers().find(o=>o.track&&o.track.id===i.id):s={track:i};const a=new Event("track");a.track=i,a.receiver=s,a.transceiver={receiver:s},a.streams=[n.stream],this.dispatchEvent(a)})},this.addEventListener("addstream",this._ontrackpoly)),e.apply(this,arguments)}}else Bn(r,"track",e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e))}function Xa(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(o,c){let l=i.apply(this,arguments);return l||(l=e(this,o),this._senders.push(l)),l};const s=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(o){s.apply(this,arguments);const c=this._senders.indexOf(o);c!==-1&&this._senders.splice(c,1)}}const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(s){this._senders=this._senders||[],t.apply(this,[s]),s.getTracks().forEach(a=>{this._senders.push(e(this,a))})};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(s){this._senders=this._senders||[],n.apply(this,[s]),s.getTracks().forEach(a=>{const o=this._senders.find(c=>c.track===a);o&&this._senders.splice(this._senders.indexOf(o),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 n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n},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 Ya(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection.prototype.getStats;r.RTCPeerConnection.prototype.getStats=function(){const[n,i,s]=arguments;if(arguments.length>0&&typeof n=="function")return e.apply(this,arguments);if(e.length===0&&(arguments.length===0||typeof n!="function"))return e.apply(this,[]);const a=function(c){const l={};return c.result().forEach(f=>{const p={id:f.id,timestamp:f.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[f.type]||f.type};f.names().forEach(m=>{p[m]=f.stat(m)}),l[p.id]=p}),l},o=function(c){return new Map(Object.keys(c).map(l=>[l,c[l]]))};if(arguments.length>=2){const c=function(l){i(o(a(l)))};return e.apply(this,[c,n])}return new Promise((c,l)=>{e.apply(this,[function(u){c(o(a(u)))},l])}).then(i,s)}}function Za(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 s=t.apply(this,[]);return s.forEach(a=>a._pc=this),s});const n=r.RTCPeerConnection.prototype.addTrack;n&&(r.RTCPeerConnection.prototype.addTrack=function(){const s=n.apply(this,arguments);return s._pc=this,s}),r.RTCRtpSender.prototype.getStats=function(){const s=this;return this._pc.getStats().then(a=>jo(a,s.track,!0))}}if(!("getStats"in r.RTCRtpReceiver.prototype)){const t=r.RTCPeerConnection.prototype.getReceivers;t&&(r.RTCPeerConnection.prototype.getReceivers=function(){const i=t.apply(this,[]);return i.forEach(s=>s._pc=this),i}),Bn(r,"track",n=>(n.receiver._pc=n.srcElement,n)),r.RTCRtpReceiver.prototype.getStats=function(){const i=this;return this._pc.getStats().then(s=>jo(s,i.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 n=arguments[0];let i,s,a;return this.getSenders().forEach(o=>{o.track===n&&(i?a=!0:i=o)}),this.getReceivers().forEach(o=>(o.track===n&&(s?a=!0:s=o),o.track===n)),a||i&&s?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):i?i.getStats():s?s.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return e.apply(this,arguments)}}function Ka(r){r.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map(a=>this._shimmedLocalStreams[a][0])};const e=r.RTCPeerConnection.prototype.addTrack;r.RTCPeerConnection.prototype.addTrack=function(a,o){if(!o)return e.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const c=e.apply(this,arguments);return this._shimmedLocalStreams[o.id]?this._shimmedLocalStreams[o.id].indexOf(c)===-1&&this._shimmedLocalStreams[o.id].push(c):this._shimmedLocalStreams[o.id]=[o,c],c};const t=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(a){this._shimmedLocalStreams=this._shimmedLocalStreams||{},a.getTracks().forEach(l=>{if(this.getSenders().find(f=>f.track===l))throw new DOMException("Track already exists.","InvalidAccessError")});const o=this.getSenders();t.apply(this,arguments);const c=this.getSenders().filter(l=>o.indexOf(l)===-1);this._shimmedLocalStreams[a.id]=[a].concat(c)};const n=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[a.id],n.apply(this,arguments)};const i=r.RTCPeerConnection.prototype.removeTrack;r.RTCPeerConnection.prototype.removeTrack=function(a){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},a&&Object.keys(this._shimmedLocalStreams).forEach(o=>{const c=this._shimmedLocalStreams[o].indexOf(a);c!==-1&&this._shimmedLocalStreams[o].splice(c,1),this._shimmedLocalStreams[o].length===1&&delete this._shimmedLocalStreams[o]}),i.apply(this,arguments)}}function Qa(r,e){if(!r.RTCPeerConnection)return;if(r.RTCPeerConnection.prototype.addTrack&&e.version>=65)return Ka(r);const t=r.RTCPeerConnection.prototype.getLocalStreams;r.RTCPeerConnection.prototype.getLocalStreams=function(){const u=t.apply(this);return this._reverseStreams=this._reverseStreams||{},u.map(f=>this._reverseStreams[f.id])};const n=r.RTCPeerConnection.prototype.addStream;r.RTCPeerConnection.prototype.addStream=function(u){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},u.getTracks().forEach(f=>{if(this.getSenders().find(m=>m.track===f))throw new DOMException("Track already exists.","InvalidAccessError")}),!this._reverseStreams[u.id]){const f=new r.MediaStream(u.getTracks());this._streams[u.id]=f,this._reverseStreams[f.id]=u,u=f}n.apply(this,[u])};const i=r.RTCPeerConnection.prototype.removeStream;r.RTCPeerConnection.prototype.removeStream=function(u){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},i.apply(this,[this._streams[u.id]||u]),delete this._reverseStreams[this._streams[u.id]?this._streams[u.id].id:u.id],delete this._streams[u.id]},r.RTCPeerConnection.prototype.addTrack=function(u,f){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(T=>T===u))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(T=>T.track===u))throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const x=this._streams[f.id];if(x)x.addTrack(u),Promise.resolve().then(()=>{this.dispatchEvent(new Event("negotiationneeded"))});else{const T=new r.MediaStream([u]);this._streams[f.id]=T,this._reverseStreams[T.id]=f,this.addStream(T)}return this.getSenders().find(T=>T.track===u)};function s(l,u){let f=u.sdp;return Object.keys(l._reverseStreams||[]).forEach(p=>{const m=l._reverseStreams[p],x=l._streams[m.id];f=f.replace(new RegExp(x.id,"g"),m.id)}),new RTCSessionDescription({type:u.type,sdp:f})}function a(l,u){let f=u.sdp;return Object.keys(l._reverseStreams||[]).forEach(p=>{const m=l._reverseStreams[p],x=l._streams[m.id];f=f.replace(new RegExp(m.id,"g"),x.id)}),new RTCSessionDescription({type:u.type,sdp:f})}["createOffer","createAnswer"].forEach(function(l){const u=r.RTCPeerConnection.prototype[l],f={[l](){const p=arguments;return arguments.length&&typeof arguments[0]=="function"?u.apply(this,[x=>{const T=s(this,x);p[0].apply(null,[T])},x=>{p[1]&&p[1].apply(null,x)},arguments[2]]):u.apply(this,arguments).then(x=>s(this,x))}};r.RTCPeerConnection.prototype[l]=f[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(u){if(this.signalingState==="closed")throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!u._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(u._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");this._streams=this._streams||{};let p;Object.keys(this._streams).forEach(m=>{this._streams[m].getTracks().find(T=>u.track===T)&&(p=this._streams[m])}),p&&(p.getTracks().length===1?this.removeStream(this._reverseStreams[p.id]):p.removeTrack(u.track),this.dispatchEvent(new Event("negotiationneeded")))}}function Bs(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 ec(r,e){Bn(r,"negotiationneeded",t=>{const n=t.target;if(!((e.version<72||n.getConfiguration&&n.getConfiguration().sdpSemantics==="plan-b")&&n.signalingState!=="stable"))return t})}const $o=Object.freeze(Object.defineProperty({__proto__:null,fixNegotiationNeeded:ec,shimAddTrackRemoveTrack:Qa,shimAddTrackRemoveTrackWithNative:Ka,shimGetDisplayMedia:Tl,shimGetSendersWithDtmf:Xa,shimGetStats:Ya,shimGetUserMedia:Wa,shimMediaStream:Ha,shimOnTrack:qa,shimPeerConnection:Bs,shimSenderReceiverGetStats:Za},Symbol.toStringTag,{value:"Module"}));function Ml(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 rs={exports:{}},Wo;function tc(){return Wo||(Wo=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
|
+
`).map(function(n){return n.trim()})},e.splitSections=function(t){var n=t.split(`
|
|
3
|
+
m=`);return n.map(function(i,s){return(s>0?"m="+i:i).trim()+`\r
|
|
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
|
|
5
|
+
`},e.parseExtmap=function(t){var n=t.substr(9).split(" ");return{id:parseInt(n[0],10),direction:n[0].indexOf("/")>0?n[0].split("/")[1]:"sendrecv",uri:n[1]}},e.writeExtmap=function(t){return"a=extmap:"+(t.id||t.preferredId)+(t.direction&&t.direction!=="sendrecv"?"/"+t.direction:"")+" "+t.uri+`\r
|
|
6
|
+
`},e.parseFmtp=function(t){for(var n={},i,s=t.substr(t.indexOf(" ")+1).split(";"),a=0;a<s.length;a++)i=s[a].trim().split("="),n[i[0].trim()]=i[1];return n},e.writeFmtp=function(t){var n="",i=t.payloadType;if(t.preferredPayloadType!==void 0&&(i=t.preferredPayloadType),t.parameters&&Object.keys(t.parameters).length){var s=[];Object.keys(t.parameters).forEach(function(a){t.parameters[a]?s.push(a+"="+t.parameters[a]):s.push(a)}),n+="a=fmtp:"+i+" "+s.join(";")+`\r
|
|
7
|
+
`}return n},e.parseRtcpFb=function(t){var n=t.substr(t.indexOf(" ")+1).split(" ");return{type:n.shift(),parameter:n.join(" ")}},e.writeRtcpFb=function(t){var n="",i=t.payloadType;return t.preferredPayloadType!==void 0&&(i=t.preferredPayloadType),t.rtcpFeedback&&t.rtcpFeedback.length&&t.rtcpFeedback.forEach(function(s){n+="a=rtcp-fb:"+i+" "+s.type+(s.parameter&&s.parameter.length?" "+s.parameter:"")+`\r
|
|
8
|
+
`}),n},e.parseSsrcMedia=function(t){var n=t.indexOf(" "),i={ssrc:parseInt(t.substr(7,n-7),10)},s=t.indexOf(":",n);return s>-1?(i.attribute=t.substr(n+1,s-n-1),i.value=t.substr(s+1)):i.attribute=t.substr(n+1),i},e.parseSsrcGroup=function(t){var n=t.substr(13).split(" ");return{semantics:n.shift(),ssrcs:n.map(function(i){return parseInt(i,10)})}},e.getMid=function(t){var n=e.matchPrefix(t,"a=mid:")[0];if(n)return n.substr(6)},e.parseFingerprint=function(t){var n=t.substr(14).split(" ");return{algorithm:n[0].toLowerCase(),value:n[1]}},e.getDtlsParameters=function(t,n){var i=e.matchPrefix(t+n,"a=fingerprint:");return{role:"auto",fingerprints:i.map(e.parseFingerprint)}},e.writeDtlsParameters=function(t,n){var i="a=setup:"+n+`\r
|
|
9
|
+
`;return t.fingerprints.forEach(function(s){i+="a=fingerprint:"+s.algorithm+" "+s.value+`\r
|
|
10
|
+
`}),i},e.parseCryptoLine=function(t){var n=t.substr(9).split(" ");return{tag:parseInt(n[0],10),cryptoSuite:n[1],keyParams:n[2],sessionParams:n.slice(3)}},e.writeCryptoLine=function(t){return"a=crypto:"+t.tag+" "+t.cryptoSuite+" "+(typeof t.keyParams=="object"?e.writeCryptoKeyParams(t.keyParams):t.keyParams)+(t.sessionParams?" "+t.sessionParams.join(" "):"")+`\r
|
|
11
|
+
`},e.parseCryptoKeyParams=function(t){if(t.indexOf("inline:")!==0)return null;var n=t.substr(7).split("|");return{keyMethod:"inline",keySalt:n[0],lifeTime:n[1],mkiValue:n[2]?n[2].split(":")[0]:void 0,mkiLength:n[2]?n[2].split(":")[1]:void 0}},e.writeCryptoKeyParams=function(t){return t.keyMethod+":"+t.keySalt+(t.lifeTime?"|"+t.lifeTime:"")+(t.mkiValue&&t.mkiLength?"|"+t.mkiValue+":"+t.mkiLength:"")},e.getCryptoParameters=function(t,n){var i=e.matchPrefix(t+n,"a=crypto:");return i.map(e.parseCryptoLine)},e.getIceParameters=function(t,n){var i=e.matchPrefix(t+n,"a=ice-ufrag:")[0],s=e.matchPrefix(t+n,"a=ice-pwd:")[0];return i&&s?{usernameFragment:i.substr(12),password:s.substr(10)}:null},e.writeIceParameters=function(t){return"a=ice-ufrag:"+t.usernameFragment+`\r
|
|
12
|
+
a=ice-pwd:`+t.password+`\r
|
|
13
|
+
`},e.parseRtpParameters=function(t){for(var n={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=e.splitLines(t),s=i[0].split(" "),a=3;a<s.length;a++){var o=s[a],c=e.matchPrefix(t,"a=rtpmap:"+o+" ")[0];if(c){var l=e.parseRtpMap(c),u=e.matchPrefix(t,"a=fmtp:"+o+" ");switch(l.parameters=u.length?e.parseFmtp(u[0]):{},l.rtcpFeedback=e.matchPrefix(t,"a=rtcp-fb:"+o+" ").map(e.parseRtcpFb),n.codecs.push(l),l.name.toUpperCase()){case"RED":case"ULPFEC":n.fecMechanisms.push(l.name.toUpperCase());break}}}return e.matchPrefix(t,"a=extmap:").forEach(function(f){n.headerExtensions.push(e.parseExtmap(f))}),n},e.writeRtpDescription=function(t,n){var i="";i+="m="+t+" ",i+=n.codecs.length>0?"9":"0",i+=" UDP/TLS/RTP/SAVPF ",i+=n.codecs.map(function(a){return a.preferredPayloadType!==void 0?a.preferredPayloadType:a.payloadType}).join(" ")+`\r
|
|
14
|
+
`,i+=`c=IN IP4 0.0.0.0\r
|
|
15
|
+
`,i+=`a=rtcp:9 IN IP4 0.0.0.0\r
|
|
16
|
+
`,n.codecs.forEach(function(a){i+=e.writeRtpMap(a),i+=e.writeFmtp(a),i+=e.writeRtcpFb(a)});var s=0;return n.codecs.forEach(function(a){a.maxptime>s&&(s=a.maxptime)}),s>0&&(i+="a=maxptime:"+s+`\r
|
|
17
|
+
`),i+=`a=rtcp-mux\r
|
|
18
|
+
`,n.headerExtensions&&n.headerExtensions.forEach(function(a){i+=e.writeExtmap(a)}),i},e.parseRtpEncodingParameters=function(t){var n=[],i=e.parseRtpParameters(t),s=i.fecMechanisms.indexOf("RED")!==-1,a=i.fecMechanisms.indexOf("ULPFEC")!==-1,o=e.matchPrefix(t,"a=ssrc:").map(function(p){return e.parseSsrcMedia(p)}).filter(function(p){return p.attribute==="cname"}),c=o.length>0&&o[0].ssrc,l,u=e.matchPrefix(t,"a=ssrc-group:FID").map(function(p){var m=p.substr(17).split(" ");return m.map(function(x){return parseInt(x,10)})});u.length>0&&u[0].length>1&&u[0][0]===c&&(l=u[0][1]),i.codecs.forEach(function(p){if(p.name.toUpperCase()==="RTX"&&p.parameters.apt){var m={ssrc:c,codecPayloadType:parseInt(p.parameters.apt,10)};c&&l&&(m.rtx={ssrc:l}),n.push(m),s&&(m=JSON.parse(JSON.stringify(m)),m.fec={ssrc:c,mechanism:a?"red+ulpfec":"red"},n.push(m))}}),n.length===0&&c&&n.push({ssrc:c});var f=e.matchPrefix(t,"b=");return f.length&&(f[0].indexOf("b=TIAS:")===0?f=parseInt(f[0].substr(7),10):f[0].indexOf("b=AS:")===0?f=parseInt(f[0].substr(5),10)*1e3*.95-2e3*8:f=void 0,n.forEach(function(p){p.maxBitrate=f})),n},e.parseRtcpParameters=function(t){var n={},i=e.matchPrefix(t,"a=ssrc:").map(function(o){return e.parseSsrcMedia(o)}).filter(function(o){return o.attribute==="cname"})[0];i&&(n.cname=i.value,n.ssrc=i.ssrc);var s=e.matchPrefix(t,"a=rtcp-rsize");n.reducedSize=s.length>0,n.compound=s.length===0;var a=e.matchPrefix(t,"a=rtcp-mux");return n.mux=a.length>0,n},e.parseMsid=function(t){var n,i=e.matchPrefix(t,"a=msid:");if(i.length===1)return n=i[0].substr(7).split(" "),{stream:n[0],track:n[1]};var s=e.matchPrefix(t,"a=ssrc:").map(function(a){return e.parseSsrcMedia(a)}).filter(function(a){return a.attribute==="msid"});if(s.length>0)return n=s[0].value.split(" "),{stream:n[0],track:n[1]}},e.parseSctpDescription=function(t){var n=e.parseMLine(t),i=e.matchPrefix(t,"a=max-message-size:"),s;i.length>0&&(s=parseInt(i[0].substr(19),10)),isNaN(s)&&(s=65536);var a=e.matchPrefix(t,"a=sctp-port:");if(a.length>0)return{port:parseInt(a[0].substr(12),10),protocol:n.fmt,maxMessageSize:s};var o=e.matchPrefix(t,"a=sctpmap:");if(o.length>0){var c=e.matchPrefix(t,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(c[0],10),protocol:c[1],maxMessageSize:s}}},e.writeSctpDescription=function(t,n){var i=[];return t.protocol!=="DTLS/SCTP"?i=["m="+t.kind+" 9 "+t.protocol+" "+n.protocol+`\r
|
|
19
|
+
`,`c=IN IP4 0.0.0.0\r
|
|
20
|
+
`,"a=sctp-port:"+n.port+`\r
|
|
21
|
+
`]:i=["m="+t.kind+" 9 "+t.protocol+" "+n.port+`\r
|
|
22
|
+
`,`c=IN IP4 0.0.0.0\r
|
|
23
|
+
`,"a=sctpmap:"+n.port+" "+n.protocol+` 65535\r
|
|
24
|
+
`],n.maxMessageSize!==void 0&&i.push("a=max-message-size:"+n.maxMessageSize+`\r
|
|
25
|
+
`),i.join("")},e.generateSessionId=function(){return Math.random().toString().substr(2,21)},e.writeSessionBoilerplate=function(t,n,i){var s,a=n!==void 0?n:2;t?s=t:s=e.generateSessionId();var o=i||"thisisadapterortc";return`v=0\r
|
|
26
|
+
o=`+o+" "+s+" "+a+` IN IP4 127.0.0.1\r
|
|
27
|
+
s=-\r
|
|
28
|
+
t=0 0\r
|
|
29
|
+
`},e.writeMediaSection=function(t,n,i,s){var a=e.writeRtpDescription(t.kind,n);if(a+=e.writeIceParameters(t.iceGatherer.getLocalParameters()),a+=e.writeDtlsParameters(t.dtlsTransport.getLocalParameters(),i==="offer"?"actpass":"active"),a+="a=mid:"+t.mid+`\r
|
|
30
|
+
`,t.direction?a+="a="+t.direction+`\r
|
|
31
|
+
`:t.rtpSender&&t.rtpReceiver?a+=`a=sendrecv\r
|
|
32
|
+
`:t.rtpSender?a+=`a=sendonly\r
|
|
33
|
+
`:t.rtpReceiver?a+=`a=recvonly\r
|
|
34
|
+
`:a+=`a=inactive\r
|
|
35
|
+
`,t.rtpSender){var o="msid:"+s.id+" "+t.rtpSender.track.id+`\r
|
|
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
|
+
`)}return a+="a=ssrc:"+t.sendEncodingParameters[0].ssrc+" cname:"+e.localCName+`\r
|
|
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})(rs)),rs.exports}var ss,Ho;function Cl(){if(Ho)return ss;Ho=1;var r=tc();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,f,p){var m=r.writeRtpDescription(c.kind,l);if(m+=r.writeIceParameters(c.iceGatherer.getLocalParameters()),m+=r.writeDtlsParameters(c.dtlsTransport.getLocalParameters(),u==="offer"?"actpass":p||"active"),m+="a=mid:"+c.mid+`\r
|
|
40
|
+
`,c.rtpSender&&c.rtpReceiver?m+=`a=sendrecv\r
|
|
41
|
+
`:c.rtpSender?m+=`a=sendonly\r
|
|
42
|
+
`:c.rtpReceiver?m+=`a=recvonly\r
|
|
43
|
+
`:m+=`a=inactive\r
|
|
44
|
+
`,c.rtpSender){var x=c.rtpSender._initialTrackId||c.rtpSender.track.id;c.rtpSender._initialTrackId=x;var T="msid:"+(f?f.id:"-")+" "+x+`\r
|
|
45
|
+
`;m+="a="+T,m+="a=ssrc:"+c.sendEncodingParameters[0].ssrc+" "+T,c.sendEncodingParameters[0].rtx&&(m+="a=ssrc:"+c.sendEncodingParameters[0].rtx.ssrc+" "+T,m+="a=ssrc-group:FID "+c.sendEncodingParameters[0].ssrc+" "+c.sendEncodingParameters[0].rtx.ssrc+`\r
|
|
46
|
+
`)}return m+="a=ssrc:"+c.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+`\r
|
|
47
|
+
`,c.rtpSender&&c.sendEncodingParameters[0].rtx&&(m+="a=ssrc:"+c.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+`\r
|
|
48
|
+
`),m}function n(c,l){var u=!1;return c=JSON.parse(JSON.stringify(c)),c.filter(function(f){if(f&&(f.urls||f.url)){var p=f.urls||f.url;f.url&&!f.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var m=typeof p=="string";return m&&(p=[p]),p=p.filter(function(x){var T=x.indexOf("turn:")===0&&x.indexOf("transport=udp")!==-1&&x.indexOf("turn:[")===-1&&!u;return T?(u=!0,!0):x.indexOf("stun:")===0&&l>=14393&&x.indexOf("?transport=udp")===-1}),delete f.url,f.urls=m?p[0]:p,!!p.length}})}function i(c,l){var u={codecs:[],headerExtensions:[],fecMechanisms:[]},f=function(m,x){m=parseInt(m,10);for(var T=0;T<x.length;T++)if(x[T].payloadType===m||x[T].preferredPayloadType===m)return x[T]},p=function(m,x,T,g){var v=f(m.parameters.apt,T),b=f(x.parameters.apt,g);return v&&b&&v.name.toLowerCase()===b.name.toLowerCase()};return c.codecs.forEach(function(m){for(var x=0;x<l.codecs.length;x++){var T=l.codecs[x];if(m.name.toLowerCase()===T.name.toLowerCase()&&m.clockRate===T.clockRate){if(m.name.toLowerCase()==="rtx"&&m.parameters&&T.parameters.apt&&!p(m,T,c.codecs,l.codecs))continue;T=JSON.parse(JSON.stringify(T)),T.numChannels=Math.min(m.numChannels,T.numChannels),u.codecs.push(T),T.rtcpFeedback=T.rtcpFeedback.filter(function(g){for(var v=0;v<m.rtcpFeedback.length;v++)if(m.rtcpFeedback[v].type===g.type&&m.rtcpFeedback[v].parameter===g.parameter)return!0;return!1});break}}}),c.headerExtensions.forEach(function(m){for(var x=0;x<l.headerExtensions.length;x++){var T=l.headerExtensions[x];if(m.uri===T.uri){u.headerExtensions.push(T);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(f){return l.foundation===f.foundation&&l.ip===f.ip&&l.port===f.port&&l.priority===f.priority&&l.protocol===f.protocol&&l.type===f.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 ss=function(c,l){function u(g,v){v.addTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("addtrack",{track:g}))}function f(g,v){v.removeTrack(g),v.dispatchEvent(new c.MediaStreamTrackEvent("removetrack",{track:g}))}function p(g,v,b,_){var w=new Event("track");w.track=v,w.receiver=b,w.transceiver={receiver:b},w.streams=_,c.setTimeout(function(){g._dispatchEvent("track",w)})}var m=function(g){var v=this,b=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach(function(w){v[w]=b[w].bind(b)}),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 _=g.iceCandidatePoolSize;_>0;_--)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(m.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(m.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),m.prototype.onicecandidate=null,m.prototype.onaddstream=null,m.prototype.ontrack=null,m.prototype.onremovestream=null,m.prototype.onsignalingstatechange=null,m.prototype.oniceconnectionstatechange=null,m.prototype.onconnectionstatechange=null,m.prototype.onicegatheringstatechange=null,m.prototype.onnegotiationneeded=null,m.prototype.ondatachannel=null,m.prototype._dispatchEvent=function(g,v){this._isClosed||(this.dispatchEvent(v),typeof this["on"+g]=="function"&&this["on"+g](v))},m.prototype._emitGatheringStateChange=function(){var g=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",g)},m.prototype.getConfiguration=function(){return this._config},m.prototype.getLocalStreams=function(){return this.localStreams},m.prototype.getRemoteStreams=function(){return this.remoteStreams},m.prototype._createTransceiver=function(g,v){var b=this.transceivers.length>0,_={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&&b)_.iceTransport=this.transceivers[0].iceTransport,_.dtlsTransport=this.transceivers[0].dtlsTransport;else{var w=this._createIceAndDtlsTransports();_.iceTransport=w.iceTransport,_.dtlsTransport=w.dtlsTransport}return v||this.transceivers.push(_),_},m.prototype.addTrack=function(g,v){if(this._isClosed)throw o("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var b=this.transceivers.find(function(C){return C.track===g});if(b)throw o("InvalidAccessError","Track already exists.");for(var _,w=0;w<this.transceivers.length;w++)!this.transceivers[w].track&&this.transceivers[w].kind===g.kind&&(_=this.transceivers[w]);return _||(_=this._createTransceiver(g.kind)),this._maybeFireNegotiationNeeded(),this.localStreams.indexOf(v)===-1&&this.localStreams.push(v),_.track=g,_.stream=v,_.rtpSender=new c.RTCRtpSender(g,_.dtlsTransport),_.rtpSender},m.prototype.addStream=function(g){var v=this;if(l>=15025)g.getTracks().forEach(function(_){v.addTrack(_,g)});else{var b=g.clone();g.getTracks().forEach(function(_,w){var C=b.getTracks()[w];_.addEventListener("enabled",function(P){C.enabled=P.enabled})}),b.getTracks().forEach(function(_){v.addTrack(_,b)})}},m.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(w){return w.rtpSender===g});if(!v)throw o("InvalidAccessError","Sender was not created by this connection.");var b=v.stream;v.rtpSender.stop(),v.rtpSender=null,v.track=null,v.stream=null;var _=this.transceivers.map(function(w){return w.stream});_.indexOf(b)===-1&&this.localStreams.indexOf(b)>-1&&this.localStreams.splice(this.localStreams.indexOf(b),1),this._maybeFireNegotiationNeeded()},m.prototype.removeStream=function(g){var v=this;g.getTracks().forEach(function(b){var _=v.getSenders().find(function(w){return w.track===b});_&&v.removeTrack(_)})},m.prototype.getSenders=function(){return this.transceivers.filter(function(g){return!!g.rtpSender}).map(function(g){return g.rtpSender})},m.prototype.getReceivers=function(){return this.transceivers.filter(function(g){return!!g.rtpReceiver}).map(function(g){return g.rtpReceiver})},m.prototype._createIceGatherer=function(g,v){var b=this;if(v&&g>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var _=new c.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(_,"state",{value:"new",writable:!0}),this.transceivers[g].bufferedCandidateEvents=[],this.transceivers[g].bufferCandidates=function(w){var C=!w.candidate||Object.keys(w.candidate).length===0;_.state=C?"completed":"gathering",b.transceivers[g].bufferedCandidateEvents!==null&&b.transceivers[g].bufferedCandidateEvents.push(w)},_.addEventListener("localcandidate",this.transceivers[g].bufferCandidates),_},m.prototype._gather=function(g,v){var b=this,_=this.transceivers[v].iceGatherer;if(!_.onlocalcandidate){var w=this.transceivers[v].bufferedCandidateEvents;this.transceivers[v].bufferedCandidateEvents=null,_.removeEventListener("localcandidate",this.transceivers[v].bufferCandidates),_.onlocalcandidate=function(C){if(!(b.usingBundle&&v>0)){var P=new Event("icecandidate");P.candidate={sdpMid:g,sdpMLineIndex:v};var E=C.candidate,I=!E||Object.keys(E).length===0;if(I)(_.state==="new"||_.state==="gathering")&&(_.state="completed");else{_.state==="new"&&(_.state="gathering"),E.component=1,E.ufrag=_.getLocalParameters().usernameFragment;var O=r.writeCandidate(E);P.candidate=Object.assign(P.candidate,r.parseCandidate(O)),P.candidate.candidate=O,P.candidate.toJSON=function(){return{candidate:P.candidate.candidate,sdpMid:P.candidate.sdpMid,sdpMLineIndex:P.candidate.sdpMLineIndex,usernameFragment:P.candidate.usernameFragment}}}var A=r.getMediaSections(b._localDescription.sdp);I?A[P.candidate.sdpMLineIndex]+=`a=end-of-candidates\r
|
|
49
|
+
`:A[P.candidate.sdpMLineIndex]+="a="+P.candidate.candidate+`\r
|
|
50
|
+
`,b._localDescription.sdp=r.getDescription(b._localDescription.sdp)+A.join("");var N=b.transceivers.every(function(B){return B.iceGatherer&&B.iceGatherer.state==="completed"});b.iceGatheringState!=="gathering"&&(b.iceGatheringState="gathering",b._emitGatheringStateChange()),I||b._dispatchEvent("icecandidate",P),N&&(b._dispatchEvent("icecandidate",new Event("icecandidate")),b.iceGatheringState="complete",b._emitGatheringStateChange())}},c.setTimeout(function(){w.forEach(function(C){_.onlocalcandidate(C)})},0)}},m.prototype._createIceAndDtlsTransports=function(){var g=this,v=new c.RTCIceTransport(null);v.onicestatechange=function(){g._updateIceConnectionState(),g._updateConnectionState()};var b=new c.RTCDtlsTransport(v);return b.ondtlsstatechange=function(){g._updateConnectionState()},b.onerror=function(){Object.defineProperty(b,"state",{value:"failed",writable:!0}),g._updateConnectionState()},{iceTransport:v,dtlsTransport:b}},m.prototype._disposeIceAndDtlsTransports=function(g){var v=this.transceivers[g].iceGatherer;v&&(delete v.onlocalcandidate,delete this.transceivers[g].iceGatherer);var b=this.transceivers[g].iceTransport;b&&(delete b.onicestatechange,delete this.transceivers[g].iceTransport);var _=this.transceivers[g].dtlsTransport;_&&(delete _.ondtlsstatechange,delete _.onerror,delete this.transceivers[g].dtlsTransport)},m.prototype._transceive=function(g,v,b){var _=i(g.localCapabilities,g.remoteCapabilities);v&&g.rtpSender&&(_.encodings=g.sendEncodingParameters,_.rtcp={cname:r.localCName,compound:g.rtcpParameters.compound},g.recvEncodingParameters.length&&(_.rtcp.ssrc=g.recvEncodingParameters[0].ssrc),g.rtpSender.send(_)),b&&g.rtpReceiver&&_.codecs.length>0&&(g.kind==="video"&&g.recvEncodingParameters&&l<15019&&g.recvEncodingParameters.forEach(function(w){delete w.rtx}),g.recvEncodingParameters.length?_.encodings=g.recvEncodingParameters:_.encodings=[{}],_.rtcp={compound:g.rtcpParameters.compound},g.rtcpParameters.cname&&(_.rtcp.cname=g.rtcpParameters.cname),g.sendEncodingParameters.length&&(_.rtcp.ssrc=g.sendEncodingParameters[0].ssrc),g.rtpReceiver.receive(_))},m.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 b,_;if(g.type==="offer")b=r.splitSections(g.sdp),_=b.shift(),b.forEach(function(C,P){var E=r.parseRtpParameters(C);v.transceivers[P].localCapabilities=E}),v.transceivers.forEach(function(C,P){v._gather(C.mid,P)});else if(g.type==="answer"){b=r.splitSections(v._remoteDescription.sdp),_=b.shift();var w=r.matchPrefix(_,"a=ice-lite").length>0;b.forEach(function(C,P){var E=v.transceivers[P],I=E.iceGatherer,O=E.iceTransport,A=E.dtlsTransport,N=E.localCapabilities,B=E.remoteCapabilities,D=r.isRejected(C)&&r.matchPrefix(C,"a=bundle-only").length===0;if(!D&&!E.rejected){var L=r.getIceParameters(C,_),J=r.getDtlsParameters(C,_);w&&(J.role="server"),(!v.usingBundle||P===0)&&(v._gather(E.mid,P),O.state==="new"&&O.start(I,L,w?"controlling":"controlled"),A.state==="new"&&A.start(J));var W=i(N,B);v._transceive(E,W.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()},m.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 b={};v.remoteStreams.forEach(function(O){b[O.id]=O});var _=[],w=r.splitSections(g.sdp),C=w.shift(),P=r.matchPrefix(C,"a=ice-lite").length>0,E=r.matchPrefix(C,"a=group:BUNDLE ").length>0;v.usingBundle=E;var I=r.matchPrefix(C,"a=ice-options:")[0];return I?v.canTrickleIceCandidates=I.substr(14).split(" ").indexOf("trickle")>=0:v.canTrickleIceCandidates=!1,w.forEach(function(O,A){var N=r.splitLines(O),B=r.getKind(O),D=r.isRejected(O)&&r.matchPrefix(O,"a=bundle-only").length===0,L=N[0].substr(2).split(" ")[2],J=r.getDirection(O,C),W=r.parseMsid(O),Y=r.getMid(O)||r.generateIdentifier();if(D||B==="application"&&(L==="DTLS/SCTP"||L==="UDP/DTLS/SCTP")){v.transceivers[A]={mid:Y,kind:B,protocol:L,rejected:!0};return}!D&&v.transceivers[A]&&v.transceivers[A].rejected&&(v.transceivers[A]=v._createTransceiver(B,!0));var G,se,ce,me,le,xe,Ce,ye,de,oe=r.parseRtpParameters(O),et,We;D||(et=r.getIceParameters(O,C),We=r.getDtlsParameters(O,C),We.role="client"),Ce=r.parseRtpEncodingParameters(O);var He=r.parseRtcpParameters(O),tt=r.matchPrefix(O,"a=end-of-candidates",C).length>0,Ae=r.matchPrefix(O,"a=candidate:").map(function(ue){return r.parseCandidate(ue)}).filter(function(ue){return ue.component===1});if((g.type==="offer"||g.type==="answer")&&!D&&E&&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"&&!D){G=v.transceivers[A]||v._createTransceiver(B),G.mid=Y,G.iceGatherer||(G.iceGatherer=v._createIceGatherer(A,E)),Ae.length&&G.iceTransport.state==="new"&&(tt&&(!E||A===0)?G.iceTransport.setRemoteCandidates(Ae):Ae.forEach(function(ue){a(G.iceTransport,ue)})),ye=c.RTCRtpReceiver.getCapabilities(B),l<15019&&(ye.codecs=ye.codecs.filter(function(ue){return ue.name!=="rtx"})),xe=G.sendEncodingParameters||[{ssrc:(2*A+2)*1001}];var pe=!1;if(J==="sendrecv"||J==="sendonly"){if(pe=!G.rtpReceiver,le=G.rtpReceiver||new c.RTCRtpReceiver(G.dtlsTransport,B),pe){var ie;de=le.track,W&&W.stream==="-"||(W?(b[W.stream]||(b[W.stream]=new c.MediaStream,Object.defineProperty(b[W.stream],"id",{get:function(){return W.stream}})),Object.defineProperty(de,"id",{get:function(){return W.track}}),ie=b[W.stream]):(b.default||(b.default=new c.MediaStream),ie=b.default)),ie&&(u(de,ie),G.associatedRemoteMediaStreams.push(ie)),_.push([de,le,ie])}}else G.rtpReceiver&&G.rtpReceiver.track&&(G.associatedRemoteMediaStreams.forEach(function(ue){var qe=ue.getTracks().find(function(mt){return mt.id===G.rtpReceiver.track.id});qe&&f(qe,ue)}),G.associatedRemoteMediaStreams=[]);G.localCapabilities=ye,G.remoteCapabilities=oe,G.rtpReceiver=le,G.rtcpParameters=He,G.sendEncodingParameters=xe,G.recvEncodingParameters=Ce,v._transceive(v.transceivers[A],!1,pe)}else if(g.type==="answer"&&!D){G=v.transceivers[A],se=G.iceGatherer,ce=G.iceTransport,me=G.dtlsTransport,le=G.rtpReceiver,xe=G.sendEncodingParameters,ye=G.localCapabilities,v.transceivers[A].recvEncodingParameters=Ce,v.transceivers[A].remoteCapabilities=oe,v.transceivers[A].rtcpParameters=He,Ae.length&&ce.state==="new"&&((P||tt)&&(!E||A===0)?ce.setRemoteCandidates(Ae):Ae.forEach(function(ue){a(G.iceTransport,ue)})),(!E||A===0)&&(ce.state==="new"&&ce.start(se,et,"controlling"),me.state==="new"&&me.start(We));var st=i(G.localCapabilities,G.remoteCapabilities),we=st.codecs.filter(function(ue){return ue.name.toLowerCase()==="rtx"}).length;!we&&G.sendEncodingParameters[0].rtx&&delete G.sendEncodingParameters[0].rtx,v._transceive(G,J==="sendrecv"||J==="recvonly",J==="sendrecv"||J==="sendonly"),le&&(J==="sendrecv"||J==="sendonly")?(de=le.track,W?(b[W.stream]||(b[W.stream]=new c.MediaStream),u(de,b[W.stream]),_.push([de,le,b[W.stream]])):(b.default||(b.default=new c.MediaStream),u(de,b.default),_.push([de,le,b.default]))):delete G.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(b).forEach(function(O){var A=b[O];if(A.getTracks().length){if(v.remoteStreams.indexOf(A)===-1){v.remoteStreams.push(A);var N=new Event("addstream");N.stream=A,c.setTimeout(function(){v._dispatchEvent("addstream",N)})}_.forEach(function(B){var D=B[0],L=B[1];A.id===B[2].id&&p(v,D,L,[A])})}}),_.forEach(function(O){O[2]||p(v,O[0],O[1],[])}),c.setTimeout(function(){v&&v.transceivers&&v.transceivers.forEach(function(O){O.iceTransport&&O.iceTransport.state==="new"&&O.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),O.iceTransport.addRemoteCandidate({}))})},4e3),Promise.resolve()},m.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")},m.prototype._updateSignalingState=function(g){this.signalingState=g;var v=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",v)},m.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))},m.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(_){_.iceTransport&&!_.rejected&&v[_.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 b=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",b)}},m.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(_){_.iceTransport&&_.dtlsTransport&&!_.rejected&&(v[_.iceTransport.state]++,v[_.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 b=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",b)}},m.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(P){return P.kind==="audio"}).length,b=g.transceivers.filter(function(P){return P.kind==="video"}).length,_=arguments[0];if(_){if(_.mandatory||_.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");_.offerToReceiveAudio!==void 0&&(_.offerToReceiveAudio===!0?v=1:_.offerToReceiveAudio===!1?v=0:v=_.offerToReceiveAudio),_.offerToReceiveVideo!==void 0&&(_.offerToReceiveVideo===!0?b=1:_.offerToReceiveVideo===!1?b=0:b=_.offerToReceiveVideo)}for(g.transceivers.forEach(function(P){P.kind==="audio"?(v--,v<0&&(P.wantReceive=!1)):P.kind==="video"&&(b--,b<0&&(P.wantReceive=!1))});v>0||b>0;)v>0&&(g._createTransceiver("audio"),v--),b>0&&(g._createTransceiver("video"),b--);var w=r.writeSessionBoilerplate(g._sdpSessionId,g._sdpSessionVersion++);g.transceivers.forEach(function(P,E){var I=P.track,O=P.kind,A=P.mid||r.generateIdentifier();P.mid=A,P.iceGatherer||(P.iceGatherer=g._createIceGatherer(E,g.usingBundle));var N=c.RTCRtpSender.getCapabilities(O);l<15019&&(N.codecs=N.codecs.filter(function(D){return D.name!=="rtx"})),N.codecs.forEach(function(D){D.name==="H264"&&D.parameters["level-asymmetry-allowed"]===void 0&&(D.parameters["level-asymmetry-allowed"]="1"),P.remoteCapabilities&&P.remoteCapabilities.codecs&&P.remoteCapabilities.codecs.forEach(function(L){D.name.toLowerCase()===L.name.toLowerCase()&&D.clockRate===L.clockRate&&(D.preferredPayloadType=L.payloadType)})}),N.headerExtensions.forEach(function(D){var L=P.remoteCapabilities&&P.remoteCapabilities.headerExtensions||[];L.forEach(function(J){D.uri===J.uri&&(D.id=J.id)})});var B=P.sendEncodingParameters||[{ssrc:(2*E+1)*1001}];I&&l>=15019&&O==="video"&&!B[0].rtx&&(B[0].rtx={ssrc:B[0].ssrc+1}),P.wantReceive&&(P.rtpReceiver=new c.RTCRtpReceiver(P.dtlsTransport,O)),P.localCapabilities=N,P.sendEncodingParameters=B}),g._config.bundlePolicy!=="max-compat"&&(w+="a=group:BUNDLE "+g.transceivers.map(function(P){return P.mid}).join(" ")+`\r
|
|
51
|
+
`),w+=`a=ice-options:trickle\r
|
|
52
|
+
`,g.transceivers.forEach(function(P,E){w+=t(P,P.localCapabilities,"offer",P.stream,g._dtlsRole),w+=`a=rtcp-rsize\r
|
|
53
|
+
`,P.iceGatherer&&g.iceGatheringState!=="new"&&(E===0||!g.usingBundle)&&(P.iceGatherer.getLocalCandidates().forEach(function(I){I.component=1,w+="a="+r.writeCandidate(I)+`\r
|
|
54
|
+
`}),P.iceGatherer.state==="completed"&&(w+=`a=end-of-candidates\r
|
|
55
|
+
`))});var C=new c.RTCSessionDescription({type:"offer",sdp:w});return Promise.resolve(C)},m.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(w){return w.mid}).join(" ")+`\r
|
|
56
|
+
`),v+=`a=ice-options:trickle\r
|
|
57
|
+
`;var b=r.getMediaSections(g._remoteDescription.sdp).length;g.transceivers.forEach(function(w,C){if(!(C+1>b)){if(w.rejected){w.kind==="application"?w.protocol==="DTLS/SCTP"?v+=`m=application 0 DTLS/SCTP 5000\r
|
|
58
|
+
`:v+="m=application 0 "+w.protocol+` webrtc-datachannel\r
|
|
59
|
+
`:w.kind==="audio"?v+=`m=audio 0 UDP/TLS/RTP/SAVPF 0\r
|
|
60
|
+
a=rtpmap:0 PCMU/8000\r
|
|
61
|
+
`:w.kind==="video"&&(v+=`m=video 0 UDP/TLS/RTP/SAVPF 120\r
|
|
62
|
+
a=rtpmap:120 VP8/90000\r
|
|
63
|
+
`),v+=`c=IN IP4 0.0.0.0\r
|
|
64
|
+
a=inactive\r
|
|
65
|
+
a=mid:`+w.mid+`\r
|
|
66
|
+
`;return}if(w.stream){var P;w.kind==="audio"?P=w.stream.getAudioTracks()[0]:w.kind==="video"&&(P=w.stream.getVideoTracks()[0]),P&&l>=15019&&w.kind==="video"&&!w.sendEncodingParameters[0].rtx&&(w.sendEncodingParameters[0].rtx={ssrc:w.sendEncodingParameters[0].ssrc+1})}var E=i(w.localCapabilities,w.remoteCapabilities),I=E.codecs.filter(function(O){return O.name.toLowerCase()==="rtx"}).length;!I&&w.sendEncodingParameters[0].rtx&&delete w.sendEncodingParameters[0].rtx,v+=t(w,E,"answer",w.stream,g._dtlsRole),w.rtcpParameters&&w.rtcpParameters.reducedSize&&(v+=`a=rtcp-rsize\r
|
|
67
|
+
`)}});var _=new c.RTCSessionDescription({type:"answer",sdp:v});return Promise.resolve(_)},m.prototype.addIceCandidate=function(g){var v=this,b;return g&&!(g.sdpMLineIndex!==void 0||g.sdpMid)?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise(function(_,w){if(v._remoteDescription)if(!g||g.candidate==="")for(var C=0;C<v.transceivers.length&&!(!v.transceivers[C].rejected&&(v.transceivers[C].iceTransport.addRemoteCandidate({}),b=r.getMediaSections(v._remoteDescription.sdp),b[C]+=`a=end-of-candidates\r
|
|
68
|
+
`,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+b.join(""),v.usingBundle));C++);else{var P=g.sdpMLineIndex;if(g.sdpMid){for(var E=0;E<v.transceivers.length;E++)if(v.transceivers[E].mid===g.sdpMid){P=E;break}}var I=v.transceivers[P];if(I){if(I.rejected)return _();var O=Object.keys(g.candidate).length>0?r.parseCandidate(g.candidate):{};if(O.protocol==="tcp"&&(O.port===0||O.port===9)||O.component&&O.component!==1)return _();if((P===0||P>0&&I.iceTransport!==v.transceivers[0].iceTransport)&&!a(I.iceTransport,O))return w(o("OperationError","Can not add ICE candidate"));var A=g.candidate.trim();A.indexOf("a=")===0&&(A=A.substr(2)),b=r.getMediaSections(v._remoteDescription.sdp),b[P]+="a="+(O.type?A:"end-of-candidates")+`\r
|
|
69
|
+
`,v._remoteDescription.sdp=r.getDescription(v._remoteDescription.sdp)+b.join("")}else return w(o("OperationError","Can not add ICE candidate"))}else return w(o("InvalidStateError","Can not add ICE candidate without a remote description"));_()})},m.prototype.getStats=function(g){if(g&&g instanceof c.MediaStreamTrack){var v=null;if(this.transceivers.forEach(function(_){_.rtpSender&&_.rtpSender.track===g?v=_.rtpSender:_.rtpReceiver&&_.rtpReceiver.track===g&&(v=_.rtpReceiver)}),!v)throw o("InvalidAccessError","Invalid selector.");return v.getStats()}var b=[];return this.transceivers.forEach(function(_){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach(function(w){_[w]&&b.push(_[w].getStats())})}),Promise.all(b).then(function(_){var w=new Map;return _.forEach(function(C){C.forEach(function(P){w.set(P.id,P)})}),w})};var x=["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"];x.forEach(function(g){var v=c[g];if(v&&v.prototype&&v.prototype.getStats){var b=v.prototype.getStats;v.prototype.getStats=function(){return b.apply(this).then(function(_){var w=new Map;return Object.keys(_).forEach(function(C){_[C].type=e(_[C]),w.set(C,_[C])}),w})}}});var T=["createOffer","createAnswer"];return T.forEach(function(g){var v=m.prototype[g];m.prototype[g]=function(){var b=arguments;return typeof b[0]=="function"||typeof b[1]=="function"?v.apply(this,[arguments[2]]).then(function(_){typeof b[0]=="function"&&b[0].apply(null,[_])},function(_){typeof b[1]=="function"&&b[1].apply(null,[_])}):v.apply(this,arguments)}}),T=["setLocalDescription","setRemoteDescription","addIceCandidate"],T.forEach(function(g){var v=m.prototype[g];m.prototype[g]=function(){var b=arguments;return typeof b[1]=="function"||typeof b[2]=="function"?v.apply(this,arguments).then(function(){typeof b[1]=="function"&&b[1].apply(null)},function(_){typeof b[2]=="function"&&b[2].apply(null,[_])}):v.apply(this,arguments)}}),["getStats"].forEach(function(g){var v=m.prototype[g];m.prototype[g]=function(){var b=arguments;return typeof b[1]=="function"?v.apply(this,arguments).then(function(){typeof b[1]=="function"&&b[1].apply(null)}):v.apply(this,arguments)}}),m},ss}var wl=Cl();const Pl=Nr(wl);function nc(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 ic(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 Ns(r,e){if(r.RTCIceGatherer&&(r.RTCIceCandidate||(r.RTCIceCandidate=function(i){return i}),r.RTCSessionDescription||(r.RTCSessionDescription=function(i){return i}),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=Pl(r,e.version);r.RTCPeerConnection=function(i){return i&&i.iceServers&&(i.iceServers=Ml(i.iceServers,e.version),no("ICE servers after filtering:",i.iceServers)),new t(i)},r.RTCPeerConnection.prototype=t.prototype}function rc(r){r.RTCRtpSender&&!("replaceTrack"in r.RTCRtpSender.prototype)&&(r.RTCRtpSender.prototype.replaceTrack=r.RTCRtpSender.prototype.setTrack)}const qo=Object.freeze(Object.defineProperty({__proto__:null,shimGetDisplayMedia:ic,shimGetUserMedia:nc,shimPeerConnection:Ns,shimReplaceTrack:rc},Symbol.toStringTag,{value:"Module"}));function sc(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 El(r,e){r.navigator.mediaDevices&&"getDisplayMedia"in r.navigator.mediaDevices||r.navigator.mediaDevices&&(r.navigator.mediaDevices.getDisplayMedia=function(n){if(!(n&&n.video)){const i=new DOMException("getDisplayMedia without video constraints is undefined");return i.name="NotFoundError",i.code=8,Promise.reject(i)}return n.video===!0?n.video={mediaSource:e}:n.video.mediaSource=e,r.navigator.mediaDevices.getUserMedia(n)})}function oc(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 Us(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[s,a,o]=arguments;return n.apply(this,[s||null]).then(c=>{if(e.version<53&&!a)try{c.forEach(l=>{l.type=t[l.type]||l.type})}catch(l){if(l.name!=="TypeError")throw l;c.forEach((u,f)=>{c.set(f,Object.assign({},u,{type:t[u.type]||u.type}))})}return c}).then(a,o)}}function ac(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 i=e.apply(this,[]);return i.forEach(s=>s._pc=this),i});const t=r.RTCPeerConnection.prototype.addTrack;t&&(r.RTCPeerConnection.prototype.addTrack=function(){const i=t.apply(this,arguments);return i._pc=this,i}),r.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function cc(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 n=e.apply(this,[]);return n.forEach(i=>i._pc=this),n}),Bn(r,"track",t=>(t.receiver._pc=t.srcElement,t)),r.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function lc(r){!r.RTCPeerConnection||"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(t){Ur("removeStream","removeTrack"),this.getSenders().forEach(n=>{n.track&&t.getTracks().includes(n.track)&&this.removeTrack(n)})})}function uc(r){r.DataChannel&&!r.RTCDataChannel&&(r.RTCDataChannel=r.DataChannel)}function hc(r){if(!(typeof r=="object"&&r.RTCPeerConnection))return;const e=r.RTCPeerConnection.prototype.addTransceiver;e&&(r.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const n=arguments[1],i=n&&"sendEncodings"in n;i&&n.sendEncodings.forEach(a=>{if("rid"in a&&!/^[a-z0-9]{0,16}$/i.test(a.rid))throw new TypeError("Invalid RID value provided.");if("scaleResolutionDownBy"in a&&!(parseFloat(a.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in a&&!(parseFloat(a.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")});const s=e.apply(this,arguments);if(i){const{sender:a}=s,o=a.getParameters();(!("encodings"in o)||o.encodings.length===1&&Object.keys(o.encodings[0]).length===0)&&(o.encodings=n.sendEncodings,a.sendEncodings=n.sendEncodings,this.setParametersPromises.push(a.setParameters(o).then(()=>{delete a.sendEncodings}).catch(()=>{delete a.sendEncodings})))}return s})}function fc(r){if(!(typeof r=="object"&&r.RTCRtpSender))return;const e=r.RTCRtpSender.prototype.getParameters;e&&(r.RTCRtpSender.prototype.getParameters=function(){const n=e.apply(this,arguments);return"encodings"in n||(n.encodings=[].concat(this.sendEncodings||[{}])),n})}function dc(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 pc(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 Xo=Object.freeze(Object.defineProperty({__proto__:null,shimAddTransceiver:hc,shimCreateAnswer:pc,shimCreateOffer:dc,shimGetDisplayMedia:El,shimGetParameters:fc,shimGetUserMedia:sc,shimOnTrack:oc,shimPeerConnection:Us,shimRTCDataChannel:uc,shimReceiverGetStats:cc,shimRemoveStream:lc,shimSenderGetStats:ac},Symbol.toStringTag,{value:"Module"}));function mc(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(n){this._localStreams||(this._localStreams=[]),this._localStreams.includes(n)||this._localStreams.push(n),n.getAudioTracks().forEach(i=>e.call(this,i,n)),n.getVideoTracks().forEach(i=>e.call(this,i,n))},r.RTCPeerConnection.prototype.addTrack=function(n,...i){return i&&i.forEach(s=>{this._localStreams?this._localStreams.includes(s)||this._localStreams.push(s):this._localStreams=[s]}),e.apply(this,arguments)}}"removeStream"in r.RTCPeerConnection.prototype||(r.RTCPeerConnection.prototype.removeStream=function(t){this._localStreams||(this._localStreams=[]);const n=this._localStreams.indexOf(t);if(n===-1)return;this._localStreams.splice(n,1);const i=t.getTracks();this.getSenders().forEach(s=>{i.includes(s.track)&&this.removeTrack(s)})})}}function yc(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 n=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(i){i.streams.forEach(s=>{if(n._remoteStreams||(n._remoteStreams=[]),n._remoteStreams.indexOf(s)>=0)return;n._remoteStreams.push(s);const a=new Event("addstream");a.stream=s,n.dispatchEvent(a)})}),e.apply(n,arguments)}}}function gc(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(l,u){const f=arguments.length>=2?arguments[2]:arguments[0],p=t.apply(this,[f]);return u?(p.then(l,u),Promise.resolve()):p},e.createAnswer=function(l,u){const f=arguments.length>=2?arguments[2]:arguments[0],p=n.apply(this,[f]);return u?(p.then(l,u),Promise.resolve()):p};let o=function(c,l,u){const f=i.apply(this,[c]);return u?(f.then(l,u),Promise.resolve()):f};e.setLocalDescription=o,o=function(c,l,u){const f=s.apply(this,[c]);return u?(f.then(l,u),Promise.resolve()):f},e.setRemoteDescription=o,o=function(c,l,u){const f=a.apply(this,[c]);return u?(f.then(l,u),Promise.resolve()):f},e.addIceCandidate=o}function vc(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(Sc(i))}!e.getUserMedia&&e.mediaDevices&&e.mediaDevices.getUserMedia&&(e.getUserMedia=(function(n,i,s){e.mediaDevices.getUserMedia(n).then(i,s)}).bind(e))}function Sc(r){return r&&r.video!==void 0?Object.assign({},r,{video:$a(r.video)}):r}function xc(r){if(!r.RTCPeerConnection)return;const e=r.RTCPeerConnection;r.RTCPeerConnection=function(n,i){if(n&&n.iceServers){const s=[];for(let a=0;a<n.iceServers.length;a++){let o=n.iceServers[a];!o.hasOwnProperty("urls")&&o.hasOwnProperty("url")?(Ur("RTCIceServer.url","RTCIceServer.urls"),o=JSON.parse(JSON.stringify(o)),o.urls=o.url,delete o.url,s.push(o)):s.push(n.iceServers[a])}n.iceServers=s}return new e(n,i)},r.RTCPeerConnection.prototype=e.prototype,"generateCertificate"in e&&Object.defineProperty(r.RTCPeerConnection,"generateCertificate",{get(){return e.generateCertificate}})}function _c(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 bc(r){const e=r.RTCPeerConnection.prototype.createOffer;r.RTCPeerConnection.prototype.createOffer=function(n){if(n){typeof n.offerToReceiveAudio<"u"&&(n.offerToReceiveAudio=!!n.offerToReceiveAudio);const i=this.getTransceivers().find(a=>a.receiver.track.kind==="audio");n.offerToReceiveAudio===!1&&i?i.direction==="sendrecv"?i.setDirection?i.setDirection("sendonly"):i.direction="sendonly":i.direction==="recvonly"&&(i.setDirection?i.setDirection("inactive"):i.direction="inactive"):n.offerToReceiveAudio===!0&&!i&&this.addTransceiver("audio"),typeof n.offerToReceiveVideo<"u"&&(n.offerToReceiveVideo=!!n.offerToReceiveVideo);const s=this.getTransceivers().find(a=>a.receiver.track.kind==="video");n.offerToReceiveVideo===!1&&s?s.direction==="sendrecv"?s.setDirection?s.setDirection("sendonly"):s.direction="sendonly":s.direction==="recvonly"&&(s.setDirection?s.setDirection("inactive"):s.direction="inactive"):n.offerToReceiveVideo===!0&&!s&&this.addTransceiver("video")}return e.apply(this,arguments)}}function Tc(r){typeof r!="object"||r.AudioContext||(r.AudioContext=r.webkitAudioContext)}const Yo=Object.freeze(Object.defineProperty({__proto__:null,shimAudioContext:Tc,shimCallbacksAPI:gc,shimConstraints:Sc,shimCreateOfferLegacy:bc,shimGetUserMedia:vc,shimLocalStreamsAPI:mc,shimRTCIceServerUrls:xc,shimRemoteStreamsAPI:yc,shimTrackEventTransceiver:_c},Symbol.toStringTag,{value:"Module"}));var kl=tc();const _r=Nr(kl);function br(r){if(!r.RTCIceCandidate||r.RTCIceCandidate&&"foundation"in r.RTCIceCandidate.prototype)return;const e=r.RTCIceCandidate;r.RTCIceCandidate=function(n){if(typeof n=="object"&&n.candidate&&n.candidate.indexOf("a=")===0&&(n=JSON.parse(JSON.stringify(n)),n.candidate=n.candidate.substr(2)),n.candidate&&n.candidate.length){const i=new e(n),s=_r.parseCandidate(n.candidate),a=Object.assign(i,s);return a.toJSON=function(){return{candidate:a.candidate,sdpMid:a.sdpMid,sdpMLineIndex:a.sdpMLineIndex,usernameFragment:a.usernameFragment}},a}return new e(n)},r.RTCIceCandidate.prototype=e.prototype,Bn(r,"icecandidate",t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new r.RTCIceCandidate(t.candidate),writable:"false"}),t))}function Kn(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=_r.splitSections(o.sdp);return c.shift(),c.some(l=>{const u=_r.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=_r.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:c}=this.getConfiguration();c==="plan-b"&&Object.defineProperty(this,"sctp",{get(){return typeof this._sctp>"u"?null:this._sctp},enumerable:!0,configurable:!0})}if(t(arguments[0])){const c=n(arguments[0]),l=i(c),u=s(arguments[0],c);let f;l===0&&u===0?f=Number.POSITIVE_INFINITY:l===0||u===0?f=Math.max(l,u):f=Math.min(l,u);const p={};Object.defineProperty(p,"maxMessageSize",{get(){return f}}),this._sctp=p}return a.apply(this,arguments)}}function Qn(r){if(!(r.RTCPeerConnection&&"createDataChannel"in r.RTCPeerConnection.prototype))return;function e(n,i){const s=n.send;n.send=function(){const o=arguments[0],c=o.length||o.size||o.byteLength;if(n.readyState==="open"&&i.sctp&&c>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 i=t.apply(this,arguments);return e(i,this),i},Bn(r,"datachannel",n=>(e(n.channel,n.target),n))}function Ds(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 Fs(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(i){if(i&&i.sdp&&i.sdp.indexOf(`
|
|
70
|
+
a=extmap-allow-mixed`)!==-1){const s=i.sdp.split(`
|
|
71
|
+
`).filter(a=>a.trim()!=="a=extmap-allow-mixed").join(`
|
|
72
|
+
`);r.RTCSessionDescription&&i instanceof r.RTCSessionDescription?arguments[0]=new r.RTCSessionDescription({type:i.type,sdp:s}):i.sdp=s}return t.apply(this,arguments)}}function Tr(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 Rl=Object.freeze(Object.defineProperty({__proto__:null,removeExtmapAllowMixed:Fs,shimAddIceCandidateNullOrEmpty:Tr,shimConnectionState:Ds,shimMaxMessageSize:Kn,shimRTCIceCandidate:br,shimSendThrowTypeError:Qn},Symbol.toStringTag,{value:"Module"}));function Al({window:r}={},e={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const t=no,n=bl(r),i={browserDetails:n,commonShim:Rl,extractVersion:Zn,disableLog:xl,disableWarnings:_l};switch(n.browser){case"chrome":if(!$o||!Bs||!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=$o,Tr(r,n),Wa(r,n),Ha(r),Bs(r,n),qa(r),Qa(r,n),Xa(r),Ya(r),Za(r),ec(r,n),br(r),Ds(r),Kn(r,n),Qn(r),Fs(r,n);break;case"firefox":if(!Xo||!Us||!e.shimFirefox)return t("Firefox shim is not included in this adapter release."),i;t("adapter.js shimming firefox."),i.browserShim=Xo,Tr(r,n),sc(r,n),Us(r,n),oc(r),lc(r),ac(r),cc(r),uc(r),hc(r),fc(r),dc(r),pc(r),br(r),Ds(r),Kn(r,n),Qn(r);break;case"edge":if(!qo||!Ns||!e.shimEdge)return t("MS edge shim is not included in this adapter release."),i;t("adapter.js shimming edge."),i.browserShim=qo,nc(r),ic(r),Ns(r,n),rc(r),Kn(r,n),Qn(r);break;case"safari":if(!Yo||!e.shimSafari)return t("Safari shim is not included in this adapter release."),i;t("adapter.js shimming safari."),i.browserShim=Yo,Tr(r,n),xc(r),bc(r),gc(r),mc(r),yc(r),_c(r),vc(r),Tc(r),br(r),Kn(r,n),Qn(r),Fs(r,n);break;default:t("Unsupported browser!");break}return i}const Zo=Al({window:typeof window>"u"?void 0:window});function Ot(r,e,t,n){Object.defineProperty(r,e,{get:t,set:n,enumerable:!0,configurable:!0})}var os=Zo.default||Zo,Ln=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 os.browserDetails.browser},r.prototype.getVersion=function(){return os.browserDetails.version||0},r.prototype.isUnifiedPlanSupported=function(){var e=this.getBrowser(),t=os.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
|
+
browser:`.concat(this.getBrowser(),`
|
|
74
|
+
version:`).concat(this.getVersion(),`
|
|
75
|
+
isIOS:`).concat(this.isIOS,`
|
|
76
|
+
isWebRTCSupported:`).concat(this.isWebRTCSupported(),`
|
|
77
|
+
isBrowserSupported:`).concat(this.isBrowserSupported(),`
|
|
78
|
+
isUnifiedPlanSupported:`).concat(this.isUnifiedPlanSupported())},r})()),Ko={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"},Ol=(function(){function r(){this.CLOUD_HOST="0.peerjs.com",this.CLOUD_PORT=443,this.chunkedBrowsers={Chrome:1,chrome:1},this.chunkedMTU=16300,this.defaultConfig=Ko,this.browser=Ln.getBrowser(),this.browserVersion=Ln.getVersion(),this.supports=(function(){var e={browser:Ln.isBrowserSupported(),webRTC:Ln.isWebRTCSupported(),audioVideo:!1,data:!1,binaryBlob:!1,reliable:!1};if(!e.webRTC)return e;var t;try{t=new RTCPeerConnection(Ko),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=!Ln.isIOS}catch{}}catch{}finally{n&&n.close()}}catch{}finally{t&&t.close()}return e})(),this.pack=Vo.pack,this.unpack=Vo.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 Ol,Mc={};Ot(Mc,"Peer",()=>Js,r=>Js=r);var Fi={},zl=Object.prototype.hasOwnProperty,$e="~";function oi(){}Object.create&&(oi.prototype=Object.create(null),new oi().__proto__||($e=!1));function Il(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 Il(t,n||r,i),a=$e?$e+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 Mr(r,e){--r._eventsCount===0?r._events=new oi:delete r._events[e]}function Fe(){this._events=new oi,this._eventsCount=0}Fe.prototype.eventNames=function(){var e=[],t,n;if(this._eventsCount===0)return e;for(n in t=this._events)zl.call(t,n)&&e.push($e?n.slice(1):n);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e};Fe.prototype.listeners=function(e){var t=$e?$e+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,s=n.length,a=new Array(s);i<s;i++)a[i]=n[i].fn;return a};Fe.prototype.listenerCount=function(e){var t=$e?$e+e:e,n=this._events[t];return n?n.fn?1:n.length:0};Fe.prototype.emit=function(e,t,n,i,s,a){var o=$e?$e+e:e;if(!this._events[o])return!1;var c=this._events[o],l=arguments.length,u,f;if(c.fn){switch(c.once&&this.removeListener(e,c.fn,void 0,!0),l){case 1:return c.fn.call(c.context),!0;case 2:return c.fn.call(c.context,t),!0;case 3:return c.fn.call(c.context,t,n),!0;case 4:return c.fn.call(c.context,t,n,i),!0;case 5:return c.fn.call(c.context,t,n,i,s),!0;case 6:return c.fn.call(c.context,t,n,i,s,a),!0}for(f=1,u=new Array(l-1);f<l;f++)u[f-1]=arguments[f];c.fn.apply(c.context,u)}else{var p=c.length,m;for(f=0;f<p;f++)switch(c[f].once&&this.removeListener(e,c[f].fn,void 0,!0),l){case 1:c[f].fn.call(c[f].context);break;case 2:c[f].fn.call(c[f].context,t);break;case 3:c[f].fn.call(c[f].context,t,n);break;case 4:c[f].fn.call(c[f].context,t,n,i);break;default:if(!u)for(m=1,u=new Array(l-1);m<l;m++)u[m-1]=arguments[m];c[f].fn.apply(c[f].context,u)}}return!0};Fe.prototype.on=function(e,t,n){return Cc(this,e,t,n,!1)};Fe.prototype.once=function(e,t,n){return Cc(this,e,t,n,!0)};Fe.prototype.removeListener=function(e,t,n,i){var s=$e?$e+e:e;if(!this._events[s])return this;if(!t)return Mr(this,s),this;var a=this._events[s];if(a.fn)a.fn===t&&(!i||a.once)&&(!n||a.context===n)&&Mr(this,s);else{for(var o=0,c=[],l=a.length;o<l;o++)(a[o].fn!==t||i&&!a[o].once||n&&a[o].context!==n)&&c.push(a[o]);c.length?this._events[s]=c.length===1?c[0]:c:Mr(this,s)}return this};Fe.prototype.removeAllListeners=function(e){var t;return e?(t=$e?$e+e:e,this._events[t]&&Mr(this,t)):(this._events=new oi,this._eventsCount=0),this};Fe.prototype.off=Fe.prototype.removeListener;Fe.prototype.addListener=Fe.prototype.on;Fe.prefixed=$e;Fe.EventEmitter=Fe;Fi=Fe;var j={};Ot(j,"LogLevel",()=>Ze,r=>Ze=r);Ot(j,"default",()=>Qo,r=>Qo=r);var nn=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},rn=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))},Bl="PeerJS: ",Ze;(function(r){r[r.Disabled=0]="Disabled",r[r.Errors=1]="Errors",r[r.Warnings=2]="Warnings",r[r.All=3]="All"})(Ze||(Ze={}));var Nl=(function(){function r(){this._logLevel=Ze.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>=Ze.All&&this._print.apply(this,rn([Ze.All],nn(e),!1))},r.prototype.warn=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=Ze.Warnings&&this._print.apply(this,rn([Ze.Warnings],nn(e),!1))},r.prototype.error=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];this._logLevel>=Ze.Errors&&this._print.apply(this,rn([Ze.Errors],nn(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=rn([Bl],nn(t),!1);for(var s in i)i[s]instanceof Error&&(i[s]="("+i[s].name+") "+i[s].message);e>=Ze.All?console.log.apply(console,rn([],nn(i),!1)):e>=Ze.Warnings?console.warn.apply(console,rn(["WARNING"],nn(i),!1)):e>=Ze.Errors&&console.error.apply(console,rn(["ERROR"],nn(i),!1))},r})(),Qo=new Nl,wc={};Ot(wc,"Socket",()=>ea,r=>ea=r);var Mt;(function(r){r.Data="data",r.Media="media"})(Mt||(Mt={}));var Se;(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"})(Se||(Se={}));var Lt;(function(r){r.Binary="binary",r.BinaryUTF8="binary-utf8",r.JSON="json"})(Lt||(Lt={}));var Jt;(function(r){r.Message="message",r.Disconnected="disconnected",r.Error="error",r.Close="close"})(Jt||(Jt={}));var Ne;(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"})(Ne||(Ne={}));var io={};io=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ückler <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>","Sören 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 Ul=(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)}})(),Dl=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},Fl=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))},Ll=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.")},ea=(function(r){Ul(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="+io.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(Jt.Message,o)},this._socket.onclose=function(a){i._disconnected||(j.default.log("Socket closed.",a),i._cleanup(),i._disconnected=!0,i.emit(Jt.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:Ne.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=Fl([],Dl(this._messagesQueue),!1);this._messagesQueue=[];try{for(var s=Ll(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(Jt.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})(Fi.EventEmitter),Ls={};Ot(Ls,"MediaConnection",()=>ia,r=>ia=r);var ro={};Ot(ro,"Negotiator",()=>ta,r=>ta=r);var wr=function(){return wr=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},wr.apply(this,arguments)},Yi=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(f){a(f)}}function c(u){try{l(n.throw(u))}catch(f){a(f)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},Zi=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}}},ta=(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===Mt.Media&&e._stream&&this._addTracksToConnection(e._stream,t),e.originator){if(this.connection.type===Mt.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:Ne.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===Mt.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===Mt.Data){var i=this.connection,s=i.dataChannel;s&&(n=!!s.readyState&&s.readyState!=="closed")}(t||n)&&e.close()}},r.prototype._makeOffer=function(){return Yi(this,void 0,Promise,function(){var e,t,n,i,s,a,o;return Zi(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===Mt.Data&&(s=this.connection,i=wr(wr({},i),{label:s.label,reliable:s.reliable,serialization:s.serialization})),t.socket.send({type:Ne.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(Se.WebRTC,a),j.default.log("Failed to setLocalDescription, ",a)),[3,6];case 6:return[3,8];case 7:return o=c.sent(),t.emitError(Se.WebRTC,o),j.default.log("Failed to createOffer, ",o),[3,8];case 8:return[2]}})})},r.prototype._makeAnswer=function(){return Yi(this,void 0,Promise,function(){var e,t,n,i,s;return Zi(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:Ne.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(Se.WebRTC,i),j.default.log("Failed to setLocalDescription, ",i),[3,6];case 6:return[3,8];case 7:return s=a.sent(),t.emitError(Se.WebRTC,s),j.default.log("Failed to create answer, ",s),[3,8];case 8:return[2]}})})},r.prototype.handleSDP=function(e,t){return Yi(this,void 0,Promise,function(){var n,i,s,a;return Zi(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(Se.WebRTC,a),j.default.log("Failed to setRemoteDescription, ",a),[3,6];case 6:return[2]}})})},r.prototype.handleCandidate=function(e){return Yi(this,void 0,Promise,function(){var t,n,i,s,a,o;return Zi(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(Se.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})(),so={};Ot(so,"BaseConnection",()=>na,r=>na=r);var Vl=(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)}})(),na=(function(r){Vl(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})(Fi.EventEmitter),Jl=(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)}})(),Pr=function(){return Pr=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},Pr.apply(this,arguments)},jl=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.")},ia=(function(r){Jl(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 ro.Negotiator(s),s._localStream&&s._negotiator.startConnection({_stream:s._localStream,originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Mt.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 Ne.Answer:this._negotiator.handleSDP(n,i.sdp),this._open=!0;break;case Ne.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(Pr(Pr({},this.options._payload),{_stream:t}));var a=this.provider._getMessages(this.connectionId);try{for(var o=jl(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})(so.BaseConnection),Vs={};Ot(Vs,"DataConnection",()=>sa,r=>sa=r);var Pc={};Ot(Pc,"EncodingQueue",()=>ra,r=>ra=r);var Gl=(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)}})(),ra=(function(r){Gl(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})(Fi.EventEmitter),$l=(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)}})(),Wl=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.")},sa=(function(r){$l(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 Pc.EncodingQueue,s.connectionId=s.options.connectionId||e.ID_PREFIX+te.randomToken(),s.label=s.options.label||s.connectionId,s.serialization=s.options.serialization||Lt.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 ro.Negotiator(s),s._negotiator.startConnection(s.options._payload||{originator:!0}),s}return Object.defineProperty(e.prototype,"type",{get:function(){return Mt.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===Lt.Binary||this.serialization===Lt.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===Lt.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===Lt.JSON)this._bufferedSend(this.stringify(t));else if(this.serialization===Lt.Binary||this.serialization===Lt.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=Wl(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 Ne.Answer:this._negotiator.handleSDP(t.type,n.sdp);break;case Ne.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})(so.BaseConnection),Ec={};Ot(Ec,"API",()=>ca,r=>ca=r);var oa=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(f){a(f)}}function c(u){try{l(n.throw(u))}catch(f){a(f)}}function l(u){u.done?s(u.value):i(u.value).then(o,c)}l((n=n.apply(r,e||[])).next())})},aa=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}}},ca=(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",io.version),fetch(c.href,{referrerPolicy:this._options.referrerPolicy})},r.prototype.retrieveId=function(){return oa(this,void 0,Promise,function(){var e,t,n;return aa(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 oa(this,void 0,Promise,function(){var e,t,n;return aa(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})(),Hl=(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)}})(),ni=function(){return ni=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},ni.apply(this,arguments)},Vn=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.")},ql=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},Js=(function(r){Hl(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=ni({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 Ec.API(n),i._socket=i._createServerConnection(),!te.supports.audioVideo&&!te.supports.data?(i._delayedAbort(Se.BrowserIncompatible,"The current browser does not support WebRTC"),i):s&&!te.validateId(s)?(i._delayedAbort(Se.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(Se.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=Vn(this._connections),a=s.next();!a.done;a=s.next()){var o=ql(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 wc.Socket(this._options.secure,this._options.host,this._options.port,this._options.path,this._options.key,this._options.pingInterval);return n.on(Jt.Message,function(i){t._handleMessage(i)}),n.on(Jt.Error,function(i){t._abort(Se.SocketError,i)}),n.on(Jt.Disconnected,function(){t.disconnected||(t.emitError(Se.Network,"Lost connection to server."),t.disconnect())}),n.on(Jt.Close,function(){t.disconnected||t._abort(Se.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 Ne.Open:this._lastServerId=this.id,this._open=!0,this.emit("open",this.id);break;case Ne.Error:this._abort(Se.ServerError,a.msg);break;case Ne.IdTaken:this._abort(Se.UnavailableID,'ID "'.concat(this.id,'" is taken'));break;case Ne.InvalidKey:this._abort(Se.InvalidKey,'API KEY "'.concat(this._options.key,'" is invalid'));break;case Ne.Leave:j.default.log("Received leave message from ".concat(o)),this._cleanupPeer(o),this._connections.delete(o);break;case Ne.Expire:this.emitError(Se.PeerUnavailable,"Could not connect to peer ".concat(o));break;case Ne.Offer:var x=a.connectionId,T=this.getConnection(o,x);if(T&&(T.close(),j.default.warn("Offer received for existing Connection ID:".concat(x))),a.type===Mt.Media){var c=new Ls.MediaConnection(o,this,{connectionId:x,_payload:a,metadata:a.metadata});T=c,this._addConnection(o,T),this.emit("call",c)}else if(a.type===Mt.Data){var l=new Vs.DataConnection(o,this,{connectionId:x,_payload:a,metadata:a.metadata,label:a.label,serialization:a.serialization,reliable:a.reliable});T=l,this._addConnection(o,T),this.emit("connection",l)}else{j.default.warn("Received malformed connection type:".concat(a.type));return}var u=this._getMessages(x);try{for(var f=Vn(u),p=f.next();!p.done;p=f.next()){var m=p.value;T.handleMessage(m)}}catch(g){n={error:g}}finally{try{p&&!p.done&&(i=f.return)&&i.call(f)}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,T=this.getConnection(o,x);T&&T.peerConnection?T.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(Se.Disconnected,"Cannot connect to new Peer after disconnecting from server.");return}var i=new Vs.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(Se.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 Ls.MediaConnection(t,this,ni(ni({},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=Vn(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=Vn(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=Vn(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(Se.ServerError,i)})},e.DEFAULT_KEY="peerjs",e})(Fi.EventEmitter),kc=Mc.Peer;const Xl=Object.freeze(Object.defineProperty({__proto__:null,get Peer(){return Js},default:kc,util:te},Symbol.toStringTag,{value:"Module"})),Yl=/^(?:[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 Zl(r){return typeof r=="string"&&Yl.test(r)}const Be=[];for(let r=0;r<256;++r)Be.push((r+256).toString(16).slice(1));function Kl(r,e=0){return Be[r[e+0]]+Be[r[e+1]]+Be[r[e+2]]+Be[r[e+3]]+"-"+Be[r[e+4]]+Be[r[e+5]]+"-"+Be[r[e+6]]+Be[r[e+7]]+"-"+Be[r[e+8]]+Be[r[e+9]]+"-"+Be[r[e+10]]+Be[r[e+11]]+Be[r[e+12]]+Be[r[e+13]]+Be[r[e+14]]+Be[r[e+15]]}function Ql(r){if(!Zl(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 eu(r){r=unescape(encodeURIComponent(r));const e=[];for(let t=0;t<r.length;++t)e.push(r.charCodeAt(t));return e}const tu="6ba7b810-9dad-11d1-80b4-00c04fd430c8",nu="6ba7b811-9dad-11d1-80b4-00c04fd430c8";function iu(r,e,t){function n(i,s,a,o){var c;if(typeof i=="string"&&(i=eu(i)),typeof s=="string"&&(s=Ql(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 Kl(l)}try{n.name=r}catch{}return n.DNS=tu,n.URL=nu,n}function ru(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 as(r,e){return r<<e|r>>>32-e}function su(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 m=0;m<16;++m)o[m]=s[a][m];for(let m=16;m<80;++m)o[m]=as(o[m-3]^o[m-8]^o[m-14]^o[m-16],1);let c=t[0],l=t[1],u=t[2],f=t[3],p=t[4];for(let m=0;m<80;++m){const x=Math.floor(m/20),T=as(c,5)+ru(x,l,u,f)+p+e[x]+o[m]>>>0;p=f,f=u,u=as(l,30)>>>0,l=c,c=T}t[0]=t[0]+c>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+u>>>0,t[3]=t[3]+f>>>0,t[4]=t[4]+p>>>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 ou=iu("v5",80,su);var cs={exports:{}},ls={exports:{}},la;function au(){return la||(la=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}};ls.exports=e})()),ls.exports}var us,ua;function ha(){if(ua)return us;ua=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 us=r,us}/*!
|
|
79
|
+
* Determine if an object is a Buffer
|
|
80
|
+
*
|
|
81
|
+
* @author Feross Aboukhadijeh <https://feross.org>
|
|
82
|
+
* @license MIT
|
|
83
|
+
*/var hs,fa;function cu(){if(fa)return hs;fa=1,hs=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 hs}var da;function lu(){return da||(da=1,(function(){var r=au(),e=ha().utf8,t=cu(),n=ha().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,f=-1732584194,p=271733878,m=0;m<o.length;m++)o[m]=(o[m]<<8|o[m]>>>24)&16711935|(o[m]<<24|o[m]>>>8)&4278255360;o[c>>>5]|=128<<c%32,o[(c+64>>>9<<4)+14]=c;for(var x=i._ff,T=i._gg,g=i._hh,v=i._ii,m=0;m<o.length;m+=16){var b=l,_=u,w=f,C=p;l=x(l,u,f,p,o[m+0],7,-680876936),p=x(p,l,u,f,o[m+1],12,-389564586),f=x(f,p,l,u,o[m+2],17,606105819),u=x(u,f,p,l,o[m+3],22,-1044525330),l=x(l,u,f,p,o[m+4],7,-176418897),p=x(p,l,u,f,o[m+5],12,1200080426),f=x(f,p,l,u,o[m+6],17,-1473231341),u=x(u,f,p,l,o[m+7],22,-45705983),l=x(l,u,f,p,o[m+8],7,1770035416),p=x(p,l,u,f,o[m+9],12,-1958414417),f=x(f,p,l,u,o[m+10],17,-42063),u=x(u,f,p,l,o[m+11],22,-1990404162),l=x(l,u,f,p,o[m+12],7,1804603682),p=x(p,l,u,f,o[m+13],12,-40341101),f=x(f,p,l,u,o[m+14],17,-1502002290),u=x(u,f,p,l,o[m+15],22,1236535329),l=T(l,u,f,p,o[m+1],5,-165796510),p=T(p,l,u,f,o[m+6],9,-1069501632),f=T(f,p,l,u,o[m+11],14,643717713),u=T(u,f,p,l,o[m+0],20,-373897302),l=T(l,u,f,p,o[m+5],5,-701558691),p=T(p,l,u,f,o[m+10],9,38016083),f=T(f,p,l,u,o[m+15],14,-660478335),u=T(u,f,p,l,o[m+4],20,-405537848),l=T(l,u,f,p,o[m+9],5,568446438),p=T(p,l,u,f,o[m+14],9,-1019803690),f=T(f,p,l,u,o[m+3],14,-187363961),u=T(u,f,p,l,o[m+8],20,1163531501),l=T(l,u,f,p,o[m+13],5,-1444681467),p=T(p,l,u,f,o[m+2],9,-51403784),f=T(f,p,l,u,o[m+7],14,1735328473),u=T(u,f,p,l,o[m+12],20,-1926607734),l=g(l,u,f,p,o[m+5],4,-378558),p=g(p,l,u,f,o[m+8],11,-2022574463),f=g(f,p,l,u,o[m+11],16,1839030562),u=g(u,f,p,l,o[m+14],23,-35309556),l=g(l,u,f,p,o[m+1],4,-1530992060),p=g(p,l,u,f,o[m+4],11,1272893353),f=g(f,p,l,u,o[m+7],16,-155497632),u=g(u,f,p,l,o[m+10],23,-1094730640),l=g(l,u,f,p,o[m+13],4,681279174),p=g(p,l,u,f,o[m+0],11,-358537222),f=g(f,p,l,u,o[m+3],16,-722521979),u=g(u,f,p,l,o[m+6],23,76029189),l=g(l,u,f,p,o[m+9],4,-640364487),p=g(p,l,u,f,o[m+12],11,-421815835),f=g(f,p,l,u,o[m+15],16,530742520),u=g(u,f,p,l,o[m+2],23,-995338651),l=v(l,u,f,p,o[m+0],6,-198630844),p=v(p,l,u,f,o[m+7],10,1126891415),f=v(f,p,l,u,o[m+14],15,-1416354905),u=v(u,f,p,l,o[m+5],21,-57434055),l=v(l,u,f,p,o[m+12],6,1700485571),p=v(p,l,u,f,o[m+3],10,-1894986606),f=v(f,p,l,u,o[m+10],15,-1051523),u=v(u,f,p,l,o[m+1],21,-2054922799),l=v(l,u,f,p,o[m+8],6,1873313359),p=v(p,l,u,f,o[m+15],10,-30611744),f=v(f,p,l,u,o[m+6],15,-1560198380),u=v(u,f,p,l,o[m+13],21,1309151649),l=v(l,u,f,p,o[m+4],6,-145523070),p=v(p,l,u,f,o[m+11],10,-1120210379),f=v(f,p,l,u,o[m+2],15,718787259),u=v(u,f,p,l,o[m+9],21,-343485551),l=l+b>>>0,u=u+_>>>0,f=f+w>>>0,p=p+C>>>0}return r.endian([l,u,f,p])};i._ff=function(s,a,o,c,l,u,f){var p=s+(a&o|~a&c)+(l>>>0)+f;return(p<<u|p>>>32-u)+a},i._gg=function(s,a,o,c,l,u,f){var p=s+(a&c|o&~c)+(l>>>0)+f;return(p<<u|p>>>32-u)+a},i._hh=function(s,a,o,c,l,u,f){var p=s+(a^o^c)+(l>>>0)+f;return(p<<u|p>>>32-u)+a},i._ii=function(s,a,o,c,l,u,f){var p=s+(o^(a|~c))+(l>>>0)+f;return(p<<u|p>>>32-u)+a},i._blocksize=16,i._digestsize=16,cs.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)}})()),cs.exports}var uu=lu();const hu=Nr(uu),De=["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 pa=1234567;const Rc=Math.PI/180,Ac=180/Math.PI;function fu(){const r=Math.random()*4294967295|0,e=Math.random()*4294967295|0,t=Math.random()*4294967295|0,n=Math.random()*4294967295|0;return(De[r&255]+De[r>>8&255]+De[r>>16&255]+De[r>>24&255]+"-"+De[e&255]+De[e>>8&255]+"-"+De[e>>16&15|64]+De[e>>24&255]+"-"+De[t&63|128]+De[t>>8&255]+"-"+De[t>>16&255]+De[t>>24&255]+De[n&255]+De[n>>8&255]+De[n>>16&255]+De[n>>24&255]).toLowerCase()}function kt(r,e,t){return Math.max(e,Math.min(t,r))}function Oc(r,e){return(r%e+e)%e}function du(r,e,t,n,i){return n+(r-e)*(i-n)/(t-e)}function pu(r,e,t){return r!==e?(t-r)/(e-r):0}function zc(r,e,t){return(1-t)*r+t*e}function mu(r,e,t,n){return zc(r,e,1-Math.exp(-t*n))}function yu(r,e=1){return e-Math.abs(Oc(r,e*2)-e)}function gu(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*(3-2*r))}function vu(r,e,t){return r<=e?0:r>=t?1:(r=(r-e)/(t-e),r*r*r*(r*(r*6-15)+10))}function Su(r,e){return r+Math.floor(Math.random()*(e-r+1))}function xu(r,e){return r+Math.random()*(e-r)}function _u(r){return r*(.5-Math.random())}function bu(r){r!==void 0&&(pa=r);let e=pa+=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 Tu(r){return r*Rc}function Mu(r){return r*Ac}function Cu(r){return(r&r-1)===0&&r!==0}function wu(r){return Math.pow(2,Math.ceil(Math.log(r)/Math.LN2))}function Pu(r){return Math.pow(2,Math.floor(Math.log(r)/Math.LN2))}function Eu(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),f=s((e-n)/2),p=a((e-n)/2),m=s((n-e)/2),x=a((n-e)/2);switch(i){case"XYX":r.set(o*u,c*f,c*p,o*l);break;case"YZY":r.set(c*p,o*u,c*f,o*l);break;case"ZXZ":r.set(c*f,c*p,o*u,o*l);break;case"XZX":r.set(o*u,c*x,c*m,o*l);break;case"YXY":r.set(c*m,o*u,c*x,o*l);break;case"ZYZ":r.set(c*x,c*m,o*u,o*l);break;default:console.warn("../math.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+i)}}function ku(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 Ru(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 Nn={DEG2RAD:Rc,RAD2DEG:Ac,generateUUID:fu,clamp:kt,euclideanModulo:Oc,mapLinear:du,inverseLerp:pu,lerp:zc,damp:mu,pingpong:yu,smoothstep:gu,smootherstep:vu,randInt:Su,randFloat:xu,randFloatSpread:_u,seededRandom:bu,degToRad:Tu,radToDeg:Mu,isPowerOfTwo:Cu,ceilPowerOfTwo:wu,floorPowerOfTwo:Pu,setQuaternionFromProperEuler:Eu,normalize:Ru,denormalize:ku};class ne{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],f=n[i+3];const p=s[a+0],m=s[a+1],x=s[a+2],T=s[a+3];if(o===0){e[t+0]=c,e[t+1]=l,e[t+2]=u,e[t+3]=f;return}if(o===1){e[t+0]=p,e[t+1]=m,e[t+2]=x,e[t+3]=T;return}if(f!==T||c!==p||l!==m||u!==x){let g=1-o;const v=c*p+l*m+u*x+f*T,b=v>=0?1:-1,_=1-v*v;if(_>Number.EPSILON){const C=Math.sqrt(_),P=Math.atan2(C,v*b);g=Math.sin(g*P)/C,o=Math.sin(o*P)/C}const w=o*b;if(c=c*g+p*w,l=l*g+m*w,u=u*g+x*w,f=f*g+T*w,g===1-o){const C=1/Math.sqrt(c*c+l*l+u*u+f*f);c*=C,l*=C,u*=C,f*=C}}e[t]=c,e[t+1]=l,e[t+2]=u,e[t+3]=f}static multiplyQuaternionsFlat(e,t,n,i,s,a){const o=n[i],c=n[i+1],l=n[i+2],u=n[i+3],f=s[a],p=s[a+1],m=s[a+2],x=s[a+3];return e[t]=o*x+u*f+c*m-l*p,e[t+1]=c*x+u*p+l*f-o*m,e[t+2]=l*x+u*m+o*p-c*f,e[t+3]=u*x-o*f-c*p-l*m,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 ne(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),f=o(s/2),p=c(n/2),m=c(i/2),x=c(s/2);switch(a){case"XYZ":this._x=p*u*f+l*m*x,this._y=l*m*f-p*u*x,this._z=l*u*x+p*m*f,this._w=l*u*f-p*m*x;break;case"YXZ":this._x=p*u*f+l*m*x,this._y=l*m*f-p*u*x,this._z=l*u*x-p*m*f,this._w=l*u*f+p*m*x;break;case"ZXY":this._x=p*u*f-l*m*x,this._y=l*m*f+p*u*x,this._z=l*u*x+p*m*f,this._w=l*u*f-p*m*x;break;case"ZYX":this._x=p*u*f-l*m*x,this._y=l*m*f+p*u*x,this._z=l*u*x-p*m*f,this._w=l*u*f+p*m*x;break;case"YZX":this._x=p*u*f+l*m*x,this._y=l*m*f+p*u*x,this._z=l*u*x-p*m*f,this._w=l*u*f-p*m*x;break;case"XZY":this._x=p*u*f-l*m*x,this._y=l*m*f-p*u*x,this._z=l*u*x+p*m*f,this._w=l*u*f+p*m*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],f=t[10],p=n+o+f;if(p>0){const m=.5/Math.sqrt(p+1);this._w=.25/m,this._x=(u-c)*m,this._y=(s-l)*m,this._z=(a-i)*m}else if(n>o&&n>f){const m=2*Math.sqrt(1+n-o-f);this._w=(u-c)/m,this._x=.25*m,this._y=(i+a)/m,this._z=(s+l)/m}else if(o>f){const m=2*Math.sqrt(1+o-n-f);this._w=(s-l)/m,this._x=(i+a)/m,this._y=.25*m,this._z=(c+u)/m}else{const m=2*Math.sqrt(1+f-n-o);this._w=(a-i)/m,this._x=(s+l)/m,this._y=(c+u)/m,this._z=.25*m}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(kt(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 m=1-t;return this._w=m*a+t*this._w,this._x=m*n+t*this._x,this._y=m*i+t*this._y,this._z=m*s+t*this._z,this.normalize(),this}const l=Math.sqrt(c),u=Math.atan2(l,o),f=Math.sin((1-t)*u)/l,p=Math.sin(t*u)/l;return this._w=a*f+this._w*p,this._x=n*f+this._x*p,this._y=i*f+this._y*p,this._z=s*f+this._z*p,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 ${constructor(e=0,t=0,n=0){this.isVector3=!0,$.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 $(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(ma.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(ma.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),f=2*(s*n-a*t);return this.x=t+c*l+a*f-o*u,this.y=n+c*u+o*l-s*f,this.z=i+c*f+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(kt(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 $,ma=new ne,Ki=2e3,ya=2001;class Ct{constructor(e,t,n,i,s,a,o,c,l,u,f,p,m,x,T,g){this.isMatrix4=!0,Ct.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,f,p,m,x,T,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,f,p,m,x,T,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]=f,v[14]=p,v[3]=m,v[7]=x,v[11]=T,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 Ct().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),f=Math.sin(s);if(e.order==="XYZ"){const p=a*u,m=a*f,x=o*u,T=o*f;t[0]=c*u,t[4]=-c*f,t[8]=l,t[1]=m+x*l,t[5]=p-T*l,t[9]=-o*c,t[2]=T-p*l,t[6]=x+m*l,t[10]=a*c}else if(e.order==="YXZ"){const p=c*u,m=c*f,x=l*u,T=l*f;t[0]=p+T*o,t[4]=x*o-m,t[8]=a*l,t[1]=a*f,t[5]=a*u,t[9]=-o,t[2]=m*o-x,t[6]=T+p*o,t[10]=a*c}else if(e.order==="ZXY"){const p=c*u,m=c*f,x=l*u,T=l*f;t[0]=p-T*o,t[4]=-a*f,t[8]=x+m*o,t[1]=m+x*o,t[5]=a*u,t[9]=T-p*o,t[2]=-a*l,t[6]=o,t[10]=a*c}else if(e.order==="ZYX"){const p=a*u,m=a*f,x=o*u,T=o*f;t[0]=c*u,t[4]=x*l-m,t[8]=p*l+T,t[1]=c*f,t[5]=T*l+p,t[9]=m*l-x,t[2]=-l,t[6]=o*c,t[10]=a*c}else if(e.order==="YZX"){const p=a*c,m=a*l,x=o*c,T=o*l;t[0]=c*u,t[4]=T-p*f,t[8]=x*f+m,t[1]=f,t[5]=a*u,t[9]=-o*u,t[2]=-l*u,t[6]=m*f+x,t[10]=p-T*f}else if(e.order==="XZY"){const p=a*c,m=a*l,x=o*c,T=o*l;t[0]=c*u,t[4]=-f,t[8]=l*u,t[1]=p*f+T,t[5]=a*u,t[9]=m*f-x,t[2]=x*f-m,t[6]=o*u,t[10]=T*f+p}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(Au,e,Ou)}lookAt(e,t,n){const i=this.elements;return it.subVectors(e,t),it.lengthSq()===0&&(it.z=1),it.normalize(),Wt.crossVectors(n,it),Wt.lengthSq()===0&&(Math.abs(n.z)===1?it.x+=1e-4:it.z+=1e-4,it.normalize(),Wt.crossVectors(n,it)),Wt.normalize(),Qi.crossVectors(it,Wt),i[0]=Wt.x,i[4]=Qi.x,i[8]=it.x,i[1]=Wt.y,i[5]=Qi.y,i[9]=it.y,i[2]=Wt.z,i[6]=Qi.z,i[10]=it.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],f=n[5],p=n[9],m=n[13],x=n[2],T=n[6],g=n[10],v=n[14],b=n[3],_=n[7],w=n[11],C=n[15],P=i[0],E=i[4],I=i[8],O=i[12],A=i[1],N=i[5],B=i[9],D=i[13],L=i[2],J=i[6],W=i[10],Y=i[14],G=i[3],se=i[7],ce=i[11],me=i[15];return s[0]=a*P+o*A+c*L+l*G,s[4]=a*E+o*N+c*J+l*se,s[8]=a*I+o*B+c*W+l*ce,s[12]=a*O+o*D+c*Y+l*me,s[1]=u*P+f*A+p*L+m*G,s[5]=u*E+f*N+p*J+m*se,s[9]=u*I+f*B+p*W+m*ce,s[13]=u*O+f*D+p*Y+m*me,s[2]=x*P+T*A+g*L+v*G,s[6]=x*E+T*N+g*J+v*se,s[10]=x*I+T*B+g*W+v*ce,s[14]=x*O+T*D+g*Y+v*me,s[3]=b*P+_*A+w*L+C*G,s[7]=b*E+_*N+w*J+C*se,s[11]=b*I+_*B+w*W+C*ce,s[15]=b*O+_*D+w*Y+C*me,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],f=e[6],p=e[10],m=e[14],x=e[3],T=e[7],g=e[11],v=e[15];return x*(+s*c*f-i*l*f-s*o*p+n*l*p+i*o*m-n*c*m)+T*(+t*c*m-t*l*p+s*a*p-i*a*m+i*l*u-s*c*u)+g*(+t*l*f-t*o*m-s*a*f+n*a*m+s*o*u-n*l*u)+v*(-i*o*u-t*c*f+t*o*p+i*a*f-n*a*p+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],f=e[9],p=e[10],m=e[11],x=e[12],T=e[13],g=e[14],v=e[15],b=f*g*l-T*p*l+T*c*m-o*g*m-f*c*v+o*p*v,_=x*p*l-u*g*l-x*c*m+a*g*m+u*c*v-a*p*v,w=u*T*l-x*f*l+x*o*m-a*T*m-u*o*v+a*f*v,C=x*f*c-u*T*c-x*o*p+a*T*p+u*o*g-a*f*g,P=t*b+n*_+i*w+s*C;if(P===0)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);const E=1/P;return e[0]=b*E,e[1]=(T*p*s-f*g*s-T*i*m+n*g*m+f*i*v-n*p*v)*E,e[2]=(o*g*s-T*c*s+T*i*l-n*g*l-o*i*v+n*c*v)*E,e[3]=(f*c*s-o*p*s-f*i*l+n*p*l+o*i*m-n*c*m)*E,e[4]=_*E,e[5]=(u*g*s-x*p*s+x*i*m-t*g*m-u*i*v+t*p*v)*E,e[6]=(x*c*s-a*g*s-x*i*l+t*g*l+a*i*v-t*c*v)*E,e[7]=(a*p*s-u*c*s+u*i*l-t*p*l-a*i*m+t*c*m)*E,e[8]=w*E,e[9]=(x*f*s-u*T*s-x*n*m+t*T*m+u*n*v-t*f*v)*E,e[10]=(a*T*s-x*o*s+x*n*l-t*T*l-a*n*v+t*o*v)*E,e[11]=(u*o*s-a*f*s-u*n*l+t*f*l+a*n*m-t*o*m)*E,e[12]=C*E,e[13]=(u*T*i-x*f*i+x*n*p-t*T*p-u*n*g+t*f*g)*E,e[14]=(x*o*i-a*T*i-x*n*c+t*T*c+a*n*g-t*o*g)*E,e[15]=(a*f*i-u*o*i+u*n*c-t*f*c-a*n*p+t*o*p)*E,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,f=o+o,p=s*l,m=s*u,x=s*f,T=a*u,g=a*f,v=o*f,b=c*l,_=c*u,w=c*f,C=n.x,P=n.y,E=n.z;return i[0]=(1-(T+v))*C,i[1]=(m+w)*C,i[2]=(x-_)*C,i[3]=0,i[4]=(m-w)*P,i[5]=(1-(p+v))*P,i[6]=(g+b)*P,i[7]=0,i[8]=(x+_)*E,i[9]=(g-b)*E,i[10]=(1-(p+T))*E,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],bt.copy(this);const l=1/s,u=1/a,f=1/o;return bt.elements[0]*=l,bt.elements[1]*=l,bt.elements[2]*=l,bt.elements[4]*=u,bt.elements[5]*=u,bt.elements[6]*=u,bt.elements[8]*=f,bt.elements[9]*=f,bt.elements[10]*=f,t.setFromRotationMatrix(bt),n.x=s,n.y=a,n.z=o,this}makePerspective(e,t,n,i,s,a,o=Ki){const c=this.elements,l=2*s/(t-e),u=2*s/(n-i),f=(t+e)/(t-e),p=(n+i)/(n-i);let m,x;if(o===Ki)m=-(a+s)/(a-s),x=-2*a*s/(a-s);else if(o===ya)m=-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]=f,c[12]=0,c[1]=0,c[5]=u,c[9]=p,c[13]=0,c[2]=0,c[6]=0,c[10]=m,c[14]=x,c[3]=0,c[7]=0,c[11]=-1,c[15]=0,this}makeOrthographic(e,t,n,i,s,a,o=Ki){const c=this.elements,l=1/(t-e),u=1/(n-i),f=1/(a-s),p=(t+e)*l,m=(n+i)*u;let x,T;if(o===Ki)x=(a+s)*f,T=-2*f;else if(o===ya)x=s*f,T=-1*f;else throw new Error("../math.Matrix4.makeOrthographic(): Invalid coordinate system: "+o);return c[0]=2*l,c[4]=0,c[8]=0,c[12]=-p,c[1]=0,c[5]=2*u,c[9]=0,c[13]=-m,c[2]=0,c[6]=0,c[10]=T,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 $,bt=new Ct,Au=new $(0,0,0),Ou=new $(1,1,1),Wt=new $,Qi=new $,it=new $,ga=new Ct,va=new ne;class ai{constructor(e=0,t=0,n=0,i=ai.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 ai(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],f=i[2],p=i[6],m=i[10];switch(t){case"XYZ":this._y=Math.asin(kt(o,-1,1)),Math.abs(o)<.9999999?(this._x=Math.atan2(-u,m),this._z=Math.atan2(-a,s)):(this._x=Math.atan2(p,l),this._z=0);break;case"YXZ":this._x=Math.asin(-kt(u,-1,1)),Math.abs(u)<.9999999?(this._y=Math.atan2(o,m),this._z=Math.atan2(c,l)):(this._y=Math.atan2(-f,s),this._z=0);break;case"ZXY":this._x=Math.asin(kt(p,-1,1)),Math.abs(p)<.9999999?(this._y=Math.atan2(-f,m),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(c,s));break;case"ZYX":this._y=Math.asin(-kt(f,-1,1)),Math.abs(f)<.9999999?(this._x=Math.atan2(p,m),this._z=Math.atan2(c,s)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(kt(c,-1,1)),Math.abs(c)<.9999999?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-f,s)):(this._x=0,this._y=Math.atan2(o,m));break;case"XZY":this._z=Math.asin(-kt(a,-1,1)),Math.abs(a)<.9999999?(this._x=Math.atan2(p,l),this._y=Math.atan2(o,s)):(this._x=Math.atan2(-u,m),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 ga.makeRotationFromQuaternion(e),this.setFromRotationMatrix(ga,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return va.setFromEuler(this),this.setFromQuaternion(va,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}}ai.DEFAULT_ORDER="XYZ";class On{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 On(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(kt(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}}On.isVector2=!0;class Qe{constructor(e=0,t=0,n=0,i=1){Qe.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 Qe(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 c=e.elements,l=c[0],u=c[4],f=c[8],p=c[1],m=c[5],x=c[9],T=c[2],g=c[6],v=c[10];if(Math.abs(u-p)<.01&&Math.abs(f-T)<.01&&Math.abs(x-g)<.01){if(Math.abs(u+p)<.1&&Math.abs(f+T)<.1&&Math.abs(x+g)<.1&&Math.abs(l+m+v-3)<.1)return this.set(1,0,0,0),this;t=Math.PI;const _=(l+1)/2,w=(m+1)/2,C=(v+1)/2,P=(u+p)/4,E=(f+T)/4,I=(x+g)/4;return _>w&&_>C?_<.01?(n=0,i=.707106781,s=.707106781):(n=Math.sqrt(_),i=P/n,s=E/n):w>C?w<.01?(n=.707106781,i=0,s=.707106781):(i=Math.sqrt(w),n=P/i,s=I/i):C<.01?(n=.707106781,i=.707106781,s=0):(s=Math.sqrt(C),n=E/s,i=I/s),this.set(n,i,s,t),this}let b=Math.sqrt((g-x)*(g-x)+(f-T)*(f-T)+(p-u)*(p-u));return Math.abs(b)<.001&&(b=1),this.x=(g-x)/b,this.y=(f-T)/b,this.z=(p-u)/b,this.w=Math.acos((l+m+v-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 At{constructor(e,t,n,i,s,a,o,c,l){At.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],f=n[7],p=n[2],m=n[5],x=n[8],T=i[0],g=i[3],v=i[6],b=i[1],_=i[4],w=i[7],C=i[2],P=i[5],E=i[8];return s[0]=a*T+o*b+c*C,s[3]=a*g+o*_+c*P,s[6]=a*v+o*w+c*E,s[1]=l*T+u*b+f*C,s[4]=l*g+u*_+f*P,s[7]=l*v+u*w+f*E,s[2]=p*T+m*b+x*C,s[5]=p*g+m*_+x*P,s[8]=p*v+m*w+x*E,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],f=u*a-o*l,p=o*c-u*s,m=l*s-a*c,x=t*f+n*p+i*m;if(x===0)return this.set(0,0,0,0,0,0,0,0,0);const T=1/x;return e[0]=f*T,e[1]=(i*l-u*n)*T,e[2]=(o*n-i*a)*T,e[3]=p*T,e[4]=(u*t-i*c)*T,e[5]=(i*s-o*t)*T,e[6]=m*T,e[7]=(n*c-l*t)*T,e[8]=(a*t-n*s)*T,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(ds.makeScale(e,t)),this}rotate(e){return this.premultiply(ds.makeRotation(-e)),this}translate(e,t){return this.premultiply(ds.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 At().fromArray(this.elements)}}const ds=new At;var Ge;(function(r){r[r.Random=0]="Random",r[r.Loop=1]="Loop",r[r.PingPong=2]="PingPong",r[r.Burst=3]="Burst"})(Ge||(Ge={}));function Li(r,e,t,n){let i;switch(Ge.Random===r?e=Math.random():Ge.Burst===r&&n.isBursting&&(e=n.burstParticleIndex/n.burstParticleCount),t>0?i=Math.floor(e/t)*t:i=e,r){case Ge.Loop:i=i%1;break;case Ge.PingPong:i=Math.abs(i%2-1);break}return i}class fn{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 fn(t[0],t[4],t[7],t[9]),right:new fn(t[9],t[8],t[6],t[3]),span:t}}clone(){return new fn(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 fn(e.p0,e.p1,e.p2,e.p3)}}const ci=r=>({r:r.x,g:r.y,b:r.z,a:r.w}),li=r=>new Qe(r.r,r.g,r.b,r.a),zu=(r,e)=>{switch(e){case"Vector3":return new $(r.x,r.y,r.z);case"Vector4":return new Qe(r.x,r.y,r.z,r.w);case"Color":return new $(r.r,r.g,r.b);case"Number":return r;default:return r}},Iu=(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 Er{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:ci(this.a),b:ci(this.b)}}static fromJSON(e){return new Er(li(e.a),li(e.b))}clone(){return new Er(this.a.clone(),this.b.clone())}}class zn{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:ci(this.a),b:ci(this.b)}}static fromJSON(e){return new zn(li(e.a),li(e.b))}clone(){return new zn(this.a.clone(),this.b.clone())}}class Zt{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:Iu(e,this.subType),pos:t}))}}static fromJSON(e){return new Zt(e.keys.map(t=>[zu(t.value,e.subType),t.pos]),e.subType)}clone(){return this.subType==="Number"?new Zt(this.keys.map(([e,t])=>[e,t]),this.subType):new Zt(this.keys.map(([e,t])=>[e.clone(),t]),this.subType)}}const er=new $;class dn{constructor(e=[[new $(0,0,0),0],[new $(1,1,1),0]],t=[[1,0],[1,1]]){this.type="function",this.color=new Zt(e,"Color"),this.alpha=new Zt(t,"Number")}genColor(e,t,n){return this.color.genValue(er,n),t.set(er.x,er.y,er.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=>[zn.fromJSON(n.function).a,n.start]);return e.functions.length>0&&t.push([zn.fromJSON(e.functions[e.functions.length-1].function).b,1]),new dn(t.map(n=>[new $(n[0].x,n[0].y,n[0].z),n[1]]),t.map(n=>[n[0].w,n[1]]))}else{const t=new dn;return t.alpha=Zt.fromJSON(e.alpha),t.color=Zt.fromJSON(e.color),t}}clone(){const e=new dn;return e.alpha=this.alpha.clone(),e.color=this.color.clone(),e}startGen(e){}}const ps=new Qe;class kr{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,ps,n),e&&e[this.indexCount]!==void 0?t.lerp(ps,e[this.indexCount]):t.lerp(ps,Math.random()),t}toJSON(){return{type:"RandomColorBetweenGradient",gradient1:this.gradient1.toJSON(),gradient2:this.gradient2.toJSON()}}static fromJSON(e){return new kr(dn.fromJSON(e.gradient1),dn.fromJSON(e.gradient2))}clone(){return new kr(this.gradient1.clone(),this.gradient2.clone())}}class pn{constructor(e){this.color=e,this.type="value"}startGen(e){}genColor(e,t){return t.copy(this.color)}toJSON(){return{type:"ConstantColor",color:ci(this.color)}}static fromJSON(e){return new pn(li(e.color))}clone(){return new pn(this.color.clone())}}function oo(r){switch(r.type){case"ConstantColor":return pn.fromJSON(r);case"ColorRange":return zn.fromJSON(r);case"RandomColor":return Er.fromJSON(r);case"Gradient":return dn.fromJSON(r);case"RandomColorBetweenGradient":return kr.fromJSON(r);default:return new pn(new Qe(1,1,1,1))}}class ee{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 ee(e.value)}clone(){return new ee(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),Nn.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 Bu{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 ui extends Bu{constructor(e=[[new fn(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 ui(e.functions.map(t=>[fn.fromJSON(t.function),t.start]))}clone(){return new ui(this.functions.map(([e,t])=>[e.clone(),t]))}startGen(e){}}function K(r){switch(r.type){case"ConstantValue":return ee.fromJSON(r);case"IntervalValue":return mn.fromJSON(r);case"PiecewiseBezier":return ui.fromJSON(r);default:return new ee(0)}}class hi{constructor(){this.indexCount=0,this.type="rotation"}startGen(e){this.indexCount=e.length,e.push(new ne);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 hi}clone(){return new hi}}class fi{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 fi(new $(e.axis.x,e.axis.y,e.axis.z),K(e.angle))}clone(){return new fi(this.axis.clone(),this.angle.clone())}}class Rr{constructor(e,t,n,i){this.angleX=e,this.angleY=t,this.angleZ=n,this.type="rotation",this.eular=new ai(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 Rr(K(e.angleX),K(e.angleY),K(e.angleZ),e.eulerOrder)}clone(){return new Rr(this.angleX,this.angleY,this.angleZ,this.eular.order)}}function Ic(r){switch(r.type){case"AxisAngle":return fi.fromJSON(r);case"Euler":return Rr.fromJSON(r);case"RandomQuat":return hi.fromJSON(r);default:return new hi}}class yn{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 yn(K(e.x),K(e.y),K(e.z))}clone(){return new yn(this.x,this.y,this.z)}}function Nu(r){switch(r.type){case"Vector3Function":return yn.fromJSON(r);default:return new yn(new ee(0),new ee(0),new ee(0))}}function Ar(r){switch(r.type){case"ConstantValue":case"IntervalValue":case"PiecewiseBezier":return K(r);case"AxisAngle":case"RandomQuat":case"Euler":return Ic(r);case"Vector3Function":return Nu(r);default:return new ee(0)}}class di{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:Ge.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ee(1),this.memory=[]}update(e,t){Ge.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=Li(this.mode,this.currentValue,this.spread,t),i=Nn.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 di({radius:e.radius,arc:e.arc,thickness:e.thickness,angle:e.angle,mode:e.mode,speed:e.speed?K(e.speed):void 0,spread:e.spread})}clone(){return new di({radius:this.radius,arc:this.arc,thickness:this.thickness,angle:this.angle,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class pi{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:Ge.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[]}update(e,t){this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t}initialize(e,t){const n=Li(this.mode,this.currentValue,this.spread,t),i=Nn.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 pi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?K(e.speed):void 0,spread:e.spread})}clone(){return new pi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}function tr(r,e){return Math.floor(Math.random()*(e-r))+r}const Dr=new $(0,1,0),Fr=new $(0,0,0),Uu=new $(1,1,1),Sa=new $(0,0,1);class mi{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:Ge.Random,this.spread=(o=e.spread)!==null&&o!==void 0?o:0,this.speed=(c=e.speed)!==null&&c!==void 0?c:new ee(1),this.memory=[],this._m1=new Ct}update(e,t){Ge.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=Li(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Nn.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 ne&&(this._m1.lookAt(Fr,e.velocity,Dr),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 mi({radius:e.radius,arc:e.arc,thickness:e.thickness,donutRadius:e.donutRadius,mode:e.mode,speed:e.speed?K(e.speed):void 0,spread:e.spread})}clone(){return new mi({radius:this.radius,arc:this.arc,thickness:this.thickness,donutRadius:this.donutRadius,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class yi{constructor(){this.type="point",this._m1=new Ct}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 ne&&(this._m1.lookAt(Fr,e.position,Dr),e.rotation.setFromRotationMatrix(this._m1))}toJSON(){return{type:"point"}}static fromJSON(e){return new yi}clone(){return new yi}}class In{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:Ge.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[],this._m1=new Ct}update(e,t){Ge.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=Li(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Nn.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),f=Math.cos(o);e.position.x=u*l,e.position.y=u*c,e.position.z=f,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof ne&&(this._m1.lookAt(Fr,e.position,Dr),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 In({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?K(e.speed):void 0,spread:e.spread})}clone(){return new In({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class gi{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:Ge.Random,this.spread=(a=e.spread)!==null&&a!==void 0?a:0,this.speed=(o=e.speed)!==null&&o!==void 0?o:new ee(1),this.memory=[],this._m1=new Ct}update(e,t){Ge.Random!=this.mode&&(this.currentValue+=this.speed.genValue(this.memory,e.emissionState.time/e.duration)*t)}initialize(e,t){const n=Li(this.mode,this.currentValue,this.spread,t),i=Math.random(),s=Nn.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),f=Math.cos(o);e.position.x=u*l,e.position.y=u*c,e.position.z=f,e.velocity.copy(e.position).multiplyScalar(e.startSpeed),e.position.multiplyScalar(this.radius*s),e.rotation instanceof ne&&(this._m1.lookAt(Fr,e.position,Dr),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 gi({radius:e.radius,arc:e.arc,thickness:e.thickness,mode:e.mode,speed:e.speed?K(e.speed):void 0,spread:e.spread})}clone(){return new gi({radius:this.radius,arc:this.arc,thickness:this.thickness,mode:this.mode,speed:this.speed.clone(),spread:this.spread})}}class vi{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 vi(e)}clone(){return new vi({width:this.width,height:this.height,column:this.column,row:this.row})}update(e,t){}}const js={circle:{type:"circle",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:pi,loadJSON:pi.fromJSON},cone:{type:"cone",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:di,loadJSON:di.fromJSON},donut:{type:"donut",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["donutRadius",["number"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:mi,loadJSON:mi.fromJSON},point:{type:"point",params:[],constructor:yi,loadJSON:yi.fromJSON},sphere:{type:"sphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:In,loadJSON:In.fromJSON},hemisphere:{type:"hemisphere",params:[["radius",["number"]],["arc",["radian"]],["thickness",["number"]],["angle",["radian"]],["mode",["emitterMode"]],["spread",["number"]],["speed",["valueFunc"]]],constructor:gi,loadJSON:gi.fromJSON},grid:{type:"grid",params:[["width",["number"]],["height",["number"]],["rows",["number"]],["column",["number"]]],constructor:vi,loadJSON:vi.fromJSON}};function Du(r,e){return js[r.type].loadJSON(r,e)}class Si{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 Si(oo(e.color))}clone(){return new Si(this.color.clone())}reset(){}}class xi{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 xi(K(e.angularVelocity))}frameUpdate(e){}clone(){return new xi(this.angularVelocity.clone())}reset(){}}class _i{constructor(e){this.angularVelocity=e,this.type="Rotation3DOverLife",this.tempQuat=new ne,this.tempQuat2=new ne}initialize(e){e.rotation instanceof ne&&(e.angularVelocity=new ne,this.angularVelocity.startGen(e.memory))}update(e,t){e.rotation instanceof ne&&(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 _i(Ic(e.angularVelocity))}frameUpdate(e){}clone(){return new _i(this.angularVelocity.clone())}reset(){}}class bi{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 $,this._tempScale=new $,this._tempQ=new ne}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 bi(K(e.x),K(e.y),K(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 bi(this.x.clone(),this.y.clone(),this.z.clone())}reset(){}}class Ti{initialize(e){this.size.startGen(e.memory)}constructor(e){this.size=e,this.type="SizeOverLife"}update(e){this.size instanceof yn?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 Ti(Ar(e.size))}frameUpdate(e){}clone(){return new Ti(this.size.clone())}reset(){}}class Mi{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 Mi(K(e.speed))}frameUpdate(e){}clone(){return new Mi(this.speed.clone())}reset(){}}class Ci{constructor(e){this.frame=e,this.type="FrameOverLife"}initialize(e){this.frame.startGen(e.memory)}update(e,t){this.frame instanceof ui&&(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 Ci(K(e.frame))}clone(){return new Ci(this.frame.clone())}reset(){}}class wi{constructor(e,t=new $(0,1,0)){this.orbitSpeed=e,this.axis=t,this.type="OrbitOverLife",this.temp=new $,this.rotation=new ne}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 wi(K(e.orbitSpeed),e.axis?new $(e.axis[0],e.axis[1],e.axis[2]):void 0)}clone(){return new wi(this.orbitSpeed.clone())}reset(){}}class ms{constructor(e){this.data=e,this.next=null,this.prev=null}hasPrev(){return this.prev!==null}hasNext(){return this.next!==null}}class Fu{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 ms(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 ms(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 ms(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 Lu{constructor(){this.startSpeed=0,this.startColor=new Qe,this.startSize=new $(1,1,1),this.position=new $,this.velocity=new $,this.age=0,this.life=1,this.size=new $(1,1,1),this.speedModifier=1,this.rotation=0,this.color=new Qe,this.uvTile=0,this.memory=[]}get died(){return this.age>=this.life}reset(){this.memory.length=0}}class Vu{constructor(e,t,n){this.position=e,this.size=t,this.color=n}}class Or{constructor(){this.startSpeed=0,this.startColor=new Qe,this.startSize=new $(1,1,1),this.position=new $,this.velocity=new $,this.age=0,this.life=1,this.size=new $(1,1,1),this.length=100,this.speedModifier=1,this.color=new Qe,this.previous=new Fu,this.uvTile=0,this.memory=[]}update(){for(this.age<=this.life?this.previous.push(new Vu(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 Pi{initialize(e){this.width.startGen(e.memory)}constructor(e){this.width=e,this.type="WidthOverLength"}update(e){if(e instanceof Or){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 Pi(K(e.width))}clone(){return new Pi(this.width.clone())}reset(){}}class Ei{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 Ei(new $(e.direction[0],e.direction[1],e.direction[2]),K((t=e.magnitude)!==null&&t!==void 0?t:e.force))}clone(){return new Ei(this.direction.clone(),this.magnitude.clone())}reset(){}}class ki{constructor(e,t){this.center=e,this.magnitude=t,this.type="GravityForce",this.temp=new $}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 ki(new $(e.center[0],e.center[1],e.center[2]),e.magnitude)}clone(){return new ki(this.center.clone(),this.magnitude)}reset(){}}class Ri{constructor(e){this.angle=e,this.type="ChangeEmitDirection",this._temp=new $,this._q=new ne,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 Ri(K(e.angle))}clone(){return new Ri(this.angle)}reset(){}}var Rn;(function(r){r[r.Death=0]="Death",r[r.Birth=1]="Birth",r[r.Frame=2]="Frame"})(Rn||(Rn={}));class Ai{constructor(e,t,n,i=Rn.Frame,s=1){this.particleSystem=e,this.useVelocityAsBasis=t,this.subParticleSystem=n,this.mode=i,this.emitProbability=s,this.type="EmitSubParticleSystem",this.q_=new ne,this.v_=new $,this.v2_=new $,this.subEmissions=new Array,this.subParticleSystem&&this.subParticleSystem.system&&(this.subParticleSystem.system.onlyUsedByOther=!0)}initialize(e){}update(e,t){this.mode===Rn.Frame?this.emit(e,t):this.mode===Rn.Birth&&e.age===0?this.emit(e,t):this.mode===Rn.Death&&e.age+t>=e.life&&this.emit(e,t)}emit(e,t){if(!this.subParticleSystem||Math.random()>this.emitProbability)return;const n=new Ct;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 Ai(t,e.useVelocityAsBasis,e.subParticleSystem,e.mode,e.emitProbability)}clone(){return new Ai(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(Sa).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 ne?n=t.rotation:(this.q_.setFromAxisAngle(Sa,t.rotation),n=this.q_),e.compose(t.position,n,Uu);this.particleSystem.worldSpace||e.multiplyMatrices(this.particleSystem.emitter.matrixWorld,e)}}const Ju=.5*(Math.sqrt(3)-1),Jn=(3-Math.sqrt(3))/6,ju=1/3,Pt=1/6,Gu=(Math.sqrt(5)-1)/4,Oe=(5-Math.sqrt(5))/20,ke=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]),be=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 Bc{constructor(e=Math.random){const t=typeof e=="function"?e:Wu(e);this.p=$u(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)*Ju,l=Math.floor(e+c),u=Math.floor(t+c),f=(l+u)*Jn,p=l-f,m=u-f,x=e-p,T=t-m;let g,v;x>T?(g=1,v=0):(g=0,v=1);const b=x-g+Jn,_=T-v+Jn,w=x-1+2*Jn,C=T-1+2*Jn,P=l&255,E=u&255;let I=.5-x*x-T*T;if(I>=0){const N=n[P+i[E]]*3;I*=I,s=I*I*(ke[N]*x+ke[N+1]*T)}let O=.5-b*b-_*_;if(O>=0){const N=n[P+g+i[E+v]]*3;O*=O,a=O*O*(ke[N]*b+ke[N+1]*_)}let A=.5-w*w-C*C;if(A>=0){const N=n[P+1+i[E+1]]*3;A*=A,o=A*A*(ke[N]*w+ke[N+1]*C)}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)*ju,f=Math.floor(e+u),p=Math.floor(t+u),m=Math.floor(n+u),x=(f+p+m)*Pt,T=f-x,g=p-x,v=m-x,b=e-T,_=t-g,w=n-v;let C,P,E,I,O,A;b>=_?_>=w?(C=1,P=0,E=0,I=1,O=1,A=0):b>=w?(C=1,P=0,E=0,I=1,O=0,A=1):(C=0,P=0,E=1,I=1,O=0,A=1):_<w?(C=0,P=0,E=1,I=0,O=1,A=1):b<w?(C=0,P=1,E=0,I=0,O=1,A=1):(C=0,P=1,E=0,I=1,O=1,A=0);const N=b-C+Pt,B=_-P+Pt,D=w-E+Pt,L=b-I+2*Pt,J=_-O+2*Pt,W=w-A+2*Pt,Y=b-1+3*Pt,G=_-1+3*Pt,se=w-1+3*Pt,ce=f&255,me=p&255,le=m&255;let xe=.6-b*b-_*_-w*w;if(xe<0)a=0;else{const oe=i[ce+s[me+s[le]]]*3;xe*=xe,a=xe*xe*(ke[oe]*b+ke[oe+1]*_+ke[oe+2]*w)}let Ce=.6-N*N-B*B-D*D;if(Ce<0)o=0;else{const oe=i[ce+C+s[me+P+s[le+E]]]*3;Ce*=Ce,o=Ce*Ce*(ke[oe]*N+ke[oe+1]*B+ke[oe+2]*D)}let ye=.6-L*L-J*J-W*W;if(ye<0)c=0;else{const oe=i[ce+I+s[me+O+s[le+A]]]*3;ye*=ye,c=ye*ye*(ke[oe]*L+ke[oe+1]*J+ke[oe+2]*W)}let de=.6-Y*Y-G*G-se*se;if(de<0)l=0;else{const oe=i[ce+1+s[me+1+s[le+1]]]*3;de*=de,l=de*de*(ke[oe]*Y+ke[oe+1]*G+ke[oe+2]*se)}return 32*(a+o+c+l)}noise4D(e,t,n,i){const s=this.perm;let a,o,c,l,u;const f=(e+t+n+i)*Gu,p=Math.floor(e+f),m=Math.floor(t+f),x=Math.floor(n+f),T=Math.floor(i+f),g=(p+m+x+T)*Oe,v=p-g,b=m-g,_=x-g,w=T-g,C=e-v,P=t-b,E=n-_,I=i-w;let O=0,A=0,N=0,B=0;C>P?O++:A++,C>E?O++:N++,C>I?O++:B++,P>E?A++:N++,P>I?A++:B++,E>I?N++:B++;const D=O>=3?1:0,L=A>=3?1:0,J=N>=3?1:0,W=B>=3?1:0,Y=O>=2?1:0,G=A>=2?1:0,se=N>=2?1:0,ce=B>=2?1:0,me=O>=1?1:0,le=A>=1?1:0,xe=N>=1?1:0,Ce=B>=1?1:0,ye=C-D+Oe,de=P-L+Oe,oe=E-J+Oe,et=I-W+Oe,We=C-Y+2*Oe,He=P-G+2*Oe,tt=E-se+2*Oe,Ae=I-ce+2*Oe,pe=C-me+3*Oe,ie=P-le+3*Oe,st=E-xe+3*Oe,we=I-Ce+3*Oe,ue=C-1+4*Oe,qe=P-1+4*Oe,mt=E-1+4*Oe,yt=I-1+4*Oe,Xe=p&255,gt=m&255,ot=x&255,at=T&255;let vt=.6-C*C-P*P-E*E-I*I;if(vt<0)a=0;else{const Q=s[Xe+s[gt+s[ot+s[at]]]]%32*4;vt*=vt,a=vt*vt*(be[Q]*C+be[Q+1]*P+be[Q+2]*E+be[Q+3]*I)}let Pe=.6-ye*ye-de*de-oe*oe-et*et;if(Pe<0)o=0;else{const Q=s[Xe+D+s[gt+L+s[ot+J+s[at+W]]]]%32*4;Pe*=Pe,o=Pe*Pe*(be[Q]*ye+be[Q+1]*de+be[Q+2]*oe+be[Q+3]*et)}let Ve=.6-We*We-He*He-tt*tt-Ae*Ae;if(Ve<0)c=0;else{const Q=s[Xe+Y+s[gt+G+s[ot+se+s[at+ce]]]]%32*4;Ve*=Ve,c=Ve*Ve*(be[Q]*We+be[Q+1]*He+be[Q+2]*tt+be[Q+3]*Ae)}let nt=.6-pe*pe-ie*ie-st*st-we*we;if(nt<0)l=0;else{const Q=s[Xe+me+s[gt+le+s[ot+xe+s[at+Ce]]]]%32*4;nt*=nt,l=nt*nt*(be[Q]*pe+be[Q+1]*ie+be[Q+2]*st+be[Q+3]*we)}let Je=.6-ue*ue-qe*qe-mt*mt-yt*yt;if(Je<0)u=0;else{const Q=s[Xe+1+s[gt+1+s[ot+1+s[at+1]]]]%32*4;Je*=Je,u=Je*Je*(be[Q]*ue+be[Q+1]*qe+be[Q+2]*mt+be[Q+3]*yt)}return 27*(a+o+c+l+u)}}function $u(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 Wu(r){let e=0,t=0,n=0,i=1;const s=Hu();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 Hu(){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 Oi{constructor(e,t,n,i){this.scale=e,this.octaves=t,this.velocityMultiplier=n,this.timeScale=i,this.type="TurbulenceField",this.generator=new Bc,this.timeOffset=new $,this.temp=new $,this.temp2=new $,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 Oi(new $(e.scale[0],e.scale[1],e.scale[2]),e.octaves,new $(e.velocityMultiplier[0],e.velocityMultiplier[1],e.velocityMultiplier[2]),new $(e.timeScale[0],e.timeScale[1],e.timeScale[2]))}clone(){return new Oi(this.scale.clone(),this.octaves,this.velocityMultiplier.clone(),this.timeScale.clone())}reset(){}}const Et=[],ys=new $,gs=new ne;class zi{constructor(e,t,n=new ee(1),i=new ee(0)){if(this.frequency=e,this.power=t,this.positionAmount=n,this.rotationAmount=i,this.type="Noise",this.duration=0,Et.length===0)for(let s=0;s<100;s++)Et.push(new Bc)}initialize(e){e.lastPosNoise=new $,typeof e.rotation=="number"?e.lastRotNoise=0:e.lastRotNoise=new ne,e.generatorIndex=[tr(0,100),tr(0,100),tr(0,100),tr(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),ys.set(Et[e.generatorIndex[0]].noise2D(0,e.age*n)*i*s,Et[e.generatorIndex[1]].noise2D(0,e.age*n)*i*s,Et[e.generatorIndex[2]].noise2D(0,e.age*n)*i*s),e.position.add(ys),e.lastPosNoise.copy(ys)),a>0&&e.lastRotNoise!==void 0&&(typeof e.rotation=="number"?(e.rotation-=e.lastRotNoise,e.rotation+=Et[e.generatorIndex[3]].noise2D(0,e.age*n)*Math.PI*i*a):(e.lastRotNoise.invert(),e.rotation.multiply(e.lastRotNoise),gs.set(Et[e.generatorIndex[0]].noise2D(0,e.age*n)*i*a,Et[e.generatorIndex[1]].noise2D(0,e.age*n)*i*a,Et[e.generatorIndex[2]].noise2D(0,e.age*n)*i*a,Et[e.generatorIndex[3]].noise2D(0,e.age*n)*i*a).normalize(),e.rotation.multiply(gs),e.lastRotNoise.copy(gs)))}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 zi(K(e.frequency),K(e.power),K(e.positionAmount),K(e.rotationAmount))}clone(){return new zi(this.frequency.clone(),this.power.clone(),this.positionAmount.clone(),this.rotationAmount.clone())}reset(){}}class Ii{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 Ii(oo(e.color),mn.fromJSON(e.speedRange))}clone(){return new Ii(this.color.clone(),this.speedRange.clone())}reset(){}}class Bi{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 yn?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 Bi(Ar(e.size),mn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Bi(this.size.clone(),this.speedRange.clone())}reset(){}}class Ni{constructor(e,t){this.angularVelocity=e,this.speedRange=t,this.type="RotationBySpeed",this.tempQuat=new ne}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 Ni(K(e.angularVelocity),mn.fromJSON(e.speedRange))}frameUpdate(e){}clone(){return new Ni(this.angularVelocity.clone(),this.speedRange.clone())}reset(){}}class Ui{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 Ui(K(e.speed),e.dampen)}frameUpdate(e){}clone(){return new Ui(this.speed.clone(),this.dampen)}reset(){}}const zr={ApplyForce:{type:"ApplyForce",constructor:Ei,params:[["direction",["vec3"]],["magnitude",["value"]]],loadJSON:Ei.fromJSON},Noise:{type:"Noise",constructor:zi,params:[["frequency",["value"]],["power",["value"]],["positionAmount",["value"]],["rotationAmount",["value"]]],loadJSON:zi.fromJSON},TurbulenceField:{type:"TurbulenceField",constructor:Oi,params:[["scale",["vec3"]],["octaves",["number"]],["velocityMultiplier",["vec3"]],["timeScale",["vec3"]]],loadJSON:Oi.fromJSON},GravityForce:{type:"GravityForce",constructor:ki,params:[["center",["vec3"]],["magnitude",["number"]]],loadJSON:ki.fromJSON},ColorOverLife:{type:"ColorOverLife",constructor:Si,params:[["color",["colorFunc"]]],loadJSON:Si.fromJSON},RotationOverLife:{type:"RotationOverLife",constructor:xi,params:[["angularVelocity",["value","valueFunc"]]],loadJSON:xi.fromJSON},Rotation3DOverLife:{type:"Rotation3DOverLife",constructor:_i,params:[["angularVelocity",["rotationFunc"]]],loadJSON:_i.fromJSON},SizeOverLife:{type:"SizeOverLife",constructor:Ti,params:[["size",["value","valueFunc","vec3Func"]]],loadJSON:Ti.fromJSON},ColorBySpeed:{type:"ColorBySpeed",constructor:Ii,params:[["color",["colorFunc"]],["speedRange",["range"]]],loadJSON:Ii.fromJSON},RotationBySpeed:{type:"RotationBySpeed",constructor:Ni,params:[["angularVelocity",["value","valueFunc"]],["speedRange",["range"]]],loadJSON:Ni.fromJSON},SizeBySpeed:{type:"SizeBySpeed",constructor:Bi,params:[["size",["value","valueFunc","vec3Func"]],["speedRange",["range"]]],loadJSON:Bi.fromJSON},SpeedOverLife:{type:"SpeedOverLife",constructor:Mi,params:[["speed",["value","valueFunc"]]],loadJSON:Mi.fromJSON},FrameOverLife:{type:"FrameOverLife",constructor:Ci,params:[["frame",["value","valueFunc"]]],loadJSON:Ci.fromJSON},ForceOverLife:{type:"ForceOverLife",constructor:bi,params:[["x",["value","valueFunc"]],["y",["value","valueFunc"]],["z",["value","valueFunc"]]],loadJSON:bi.fromJSON},OrbitOverLife:{type:"OrbitOverLife",constructor:wi,params:[["orbitSpeed",["value","valueFunc"]],["axis",["vec3"]]],loadJSON:wi.fromJSON},WidthOverLength:{type:"WidthOverLength",constructor:Pi,params:[["width",["value","valueFunc"]]],loadJSON:Pi.fromJSON},ChangeEmitDirection:{type:"ChangeEmitDirection",constructor:Ri,params:[["angle",["value"]]],loadJSON:Ri.fromJSON},EmitSubParticleSystem:{type:"EmitSubParticleSystem",constructor:Ai,params:[["particleSystem",["self"]],["useVelocityAsBasis",["boolean"]],["subParticleSystem",["particleSystem"]],["mode",["number"]],["emitProbability",["number"]]],loadJSON:Ai.fromJSON},LimitSpeedOverLife:{type:"LimitSpeedOverLife",constructor:Ui,params:[["speed",["value","valueFunc"]],["dampen",["number"]]],loadJSON:Ui.fromJSON}};function qu(r,e){return zr[r.type]?zr[r.type].loadJSON(r,e):null}const Xu=[];function Yu(r){if(!Xu.find(t=>t.id===r.id)){for(const t of r.emitterShapes)js[t.type]||(js[t.type]=t);for(const t of r.behaviors)zr[t.type]||(zr[t.type]=t)}}var Zu=`
|
|
84
|
+
#ifdef SOFT_PARTICLES
|
|
85
|
+
|
|
86
|
+
/* #ifdef LOGDEPTH
|
|
87
|
+
float distSample = linearize_depth_log(sampleDepth, near, far);
|
|
88
|
+
#else
|
|
89
|
+
float distSample = ortho ? linearize_depth_ortho(sampleDepth, near, far) : linearize_depth(sampleDepth, near, far);
|
|
90
|
+
#endif */
|
|
91
|
+
|
|
92
|
+
vec2 p2 = projPosition.xy / projPosition.w;
|
|
93
|
+
|
|
94
|
+
p2 = 0.5 * p2 + 0.5;
|
|
95
|
+
|
|
96
|
+
float readDepth = texture2D(depthTexture, p2.xy).r;
|
|
97
|
+
float viewDepth = linearize_depth(readDepth);
|
|
98
|
+
|
|
99
|
+
float softParticlesFade = saturate(SOFT_INV_FADE_DISTANCE * ((viewDepth - SOFT_NEAR_FADE) - linearDepth));
|
|
100
|
+
|
|
101
|
+
gl_FragColor *= softParticlesFade;
|
|
102
|
+
|
|
103
|
+
//gl_FragColor = vec4(softParticlesFade , 0, 0, 1);
|
|
104
|
+
#endif
|
|
105
|
+
`,Ku=`
|
|
106
|
+
#ifdef SOFT_PARTICLES
|
|
107
|
+
|
|
108
|
+
uniform sampler2D depthTexture;
|
|
109
|
+
uniform vec4 projParams;
|
|
110
|
+
uniform vec2 softParams;
|
|
111
|
+
|
|
112
|
+
varying vec4 projPosition;
|
|
113
|
+
varying float linearDepth;
|
|
114
|
+
|
|
115
|
+
#define SOFT_NEAR_FADE softParams.x
|
|
116
|
+
#define SOFT_INV_FADE_DISTANCE softParams.y
|
|
117
|
+
|
|
118
|
+
#define zNear projParams.x
|
|
119
|
+
#define zFar projParams.y
|
|
120
|
+
|
|
121
|
+
float linearize_depth(float d)
|
|
122
|
+
{
|
|
123
|
+
return (zFar * zNear) / (zFar - d * (zFar - zNear));
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
#endif
|
|
127
|
+
`,Qu=`
|
|
128
|
+
#ifdef SOFT_PARTICLES
|
|
129
|
+
varying vec4 projPosition;
|
|
130
|
+
varying float linearDepth;
|
|
131
|
+
#endif
|
|
132
|
+
`,eh=`
|
|
133
|
+
#ifdef SOFT_PARTICLES
|
|
134
|
+
projPosition = gl_Position;
|
|
135
|
+
linearDepth = -mvPosition.z;
|
|
136
|
+
#endif
|
|
137
|
+
`,th=`
|
|
138
|
+
#ifdef USE_MAP
|
|
139
|
+
vec4 texelColor = texture2D( map, vUv);
|
|
140
|
+
#ifdef TILE_BLEND
|
|
141
|
+
texelColor = mix( texelColor, texture2D( map, vUvNext ), vUvBlend );
|
|
142
|
+
#endif
|
|
143
|
+
diffuseColor *= texelColor;
|
|
144
|
+
#endif
|
|
145
|
+
`,nh=`
|
|
146
|
+
#if defined( USE_UV ) || defined( USE_ANISOTROPY )
|
|
147
|
+
|
|
148
|
+
varying vec2 vUv;
|
|
149
|
+
#ifdef TILE_BLEND
|
|
150
|
+
varying vec2 vUvNext;
|
|
151
|
+
varying float vUvBlend;
|
|
152
|
+
#endif
|
|
153
|
+
|
|
154
|
+
#endif
|
|
155
|
+
#ifdef USE_MAP
|
|
156
|
+
|
|
157
|
+
uniform mat3 mapTransform;
|
|
158
|
+
varying vec2 vMapUv;
|
|
159
|
+
#ifdef TILE_BLEND
|
|
160
|
+
varying vec2 vMapUvNext;
|
|
161
|
+
#endif
|
|
162
|
+
|
|
163
|
+
#endif
|
|
164
|
+
#ifdef USE_ALPHAMAP
|
|
165
|
+
|
|
166
|
+
uniform mat3 alphaMapTransform;
|
|
167
|
+
varying vec2 vAlphaMapUv;
|
|
168
|
+
|
|
169
|
+
#endif
|
|
170
|
+
#ifdef USE_LIGHTMAP
|
|
171
|
+
|
|
172
|
+
uniform mat3 lightMapTransform;
|
|
173
|
+
varying vec2 vLightMapUv;
|
|
174
|
+
|
|
175
|
+
#endif
|
|
176
|
+
#ifdef USE_AOMAP
|
|
177
|
+
|
|
178
|
+
uniform mat3 aoMapTransform;
|
|
179
|
+
varying vec2 vAoMapUv;
|
|
180
|
+
|
|
181
|
+
#endif
|
|
182
|
+
#ifdef USE_BUMPMAP
|
|
183
|
+
|
|
184
|
+
uniform mat3 bumpMapTransform;
|
|
185
|
+
varying vec2 vBumpMapUv;
|
|
186
|
+
|
|
187
|
+
#endif
|
|
188
|
+
#ifdef USE_NORMALMAP
|
|
189
|
+
|
|
190
|
+
uniform mat3 normalMapTransform;
|
|
191
|
+
varying vec2 vNormalMapUv;
|
|
192
|
+
|
|
193
|
+
#endif
|
|
194
|
+
#ifdef USE_DISPLACEMENTMAP
|
|
195
|
+
|
|
196
|
+
uniform mat3 displacementMapTransform;
|
|
197
|
+
varying vec2 vDisplacementMapUv;
|
|
198
|
+
|
|
199
|
+
#endif
|
|
200
|
+
#ifdef USE_EMISSIVEMAP
|
|
201
|
+
|
|
202
|
+
uniform mat3 emissiveMapTransform;
|
|
203
|
+
varying vec2 vEmissiveMapUv;
|
|
204
|
+
|
|
205
|
+
#endif
|
|
206
|
+
#ifdef USE_METALNESSMAP
|
|
207
|
+
|
|
208
|
+
uniform mat3 metalnessMapTransform;
|
|
209
|
+
varying vec2 vMetalnessMapUv;
|
|
210
|
+
|
|
211
|
+
#endif
|
|
212
|
+
#ifdef USE_ROUGHNESSMAP
|
|
213
|
+
|
|
214
|
+
uniform mat3 roughnessMapTransform;
|
|
215
|
+
varying vec2 vRoughnessMapUv;
|
|
216
|
+
|
|
217
|
+
#endif
|
|
218
|
+
#ifdef USE_ANISOTROPYMAP
|
|
219
|
+
|
|
220
|
+
uniform mat3 anisotropyMapTransform;
|
|
221
|
+
varying vec2 vAnisotropyMapUv;
|
|
222
|
+
|
|
223
|
+
#endif
|
|
224
|
+
#ifdef USE_CLEARCOATMAP
|
|
225
|
+
|
|
226
|
+
uniform mat3 clearcoatMapTransform;
|
|
227
|
+
varying vec2 vClearcoatMapUv;
|
|
228
|
+
|
|
229
|
+
#endif
|
|
230
|
+
#ifdef USE_CLEARCOAT_NORMALMAP
|
|
231
|
+
|
|
232
|
+
uniform mat3 clearcoatNormalMapTransform;
|
|
233
|
+
varying vec2 vClearcoatNormalMapUv;
|
|
234
|
+
|
|
235
|
+
#endif
|
|
236
|
+
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
|
237
|
+
|
|
238
|
+
uniform mat3 clearcoatRoughnessMapTransform;
|
|
239
|
+
varying vec2 vClearcoatRoughnessMapUv;
|
|
240
|
+
|
|
241
|
+
#endif
|
|
242
|
+
#ifdef USE_SHEEN_COLORMAP
|
|
243
|
+
|
|
244
|
+
uniform mat3 sheenColorMapTransform;
|
|
245
|
+
varying vec2 vSheenColorMapUv;
|
|
246
|
+
|
|
247
|
+
#endif
|
|
248
|
+
#ifdef USE_SHEEN_ROUGHNESSMAP
|
|
249
|
+
|
|
250
|
+
uniform mat3 sheenRoughnessMapTransform;
|
|
251
|
+
varying vec2 vSheenRoughnessMapUv;
|
|
252
|
+
|
|
253
|
+
#endif
|
|
254
|
+
#ifdef USE_IRIDESCENCEMAP
|
|
255
|
+
|
|
256
|
+
uniform mat3 iridescenceMapTransform;
|
|
257
|
+
varying vec2 vIridescenceMapUv;
|
|
258
|
+
|
|
259
|
+
#endif
|
|
260
|
+
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
|
261
|
+
|
|
262
|
+
uniform mat3 iridescenceThicknessMapTransform;
|
|
263
|
+
varying vec2 vIridescenceThicknessMapUv;
|
|
264
|
+
|
|
265
|
+
#endif
|
|
266
|
+
#ifdef USE_SPECULARMAP
|
|
267
|
+
|
|
268
|
+
uniform mat3 specularMapTransform;
|
|
269
|
+
varying vec2 vSpecularMapUv;
|
|
270
|
+
|
|
271
|
+
#endif
|
|
272
|
+
#ifdef USE_SPECULAR_COLORMAP
|
|
273
|
+
|
|
274
|
+
uniform mat3 specularColorMapTransform;
|
|
275
|
+
varying vec2 vSpecularColorMapUv;
|
|
276
|
+
|
|
277
|
+
#endif
|
|
278
|
+
#ifdef USE_SPECULAR_INTENSITYMAP
|
|
279
|
+
|
|
280
|
+
uniform mat3 specularIntensityMapTransform;
|
|
281
|
+
varying vec2 vSpecularIntensityMapUv;
|
|
282
|
+
|
|
283
|
+
#endif
|
|
284
|
+
#ifdef USE_TRANSMISSIONMAP
|
|
285
|
+
|
|
286
|
+
uniform mat3 transmissionMapTransform;
|
|
287
|
+
varying vec2 vTransmissionMapUv;
|
|
288
|
+
|
|
289
|
+
#endif
|
|
290
|
+
#ifdef USE_THICKNESSMAP
|
|
291
|
+
|
|
292
|
+
uniform mat3 thicknessMapTransform;
|
|
293
|
+
varying vec2 vThicknessMapUv;
|
|
294
|
+
|
|
295
|
+
#endif
|
|
296
|
+
`,ih=`
|
|
297
|
+
#ifdef UV_TILE
|
|
298
|
+
attribute float uvTile;
|
|
299
|
+
uniform vec2 tileCount;
|
|
300
|
+
|
|
301
|
+
mat3 makeTileTransform(float uvTile) {
|
|
302
|
+
float col = mod(uvTile, tileCount.x);
|
|
303
|
+
float row = (tileCount.y - floor(uvTile / tileCount.x) - 1.0);
|
|
304
|
+
|
|
305
|
+
return mat3(
|
|
306
|
+
1.0 / tileCount.x, 0.0, 0.0,
|
|
307
|
+
0.0, 1.0 / tileCount.y, 0.0,
|
|
308
|
+
col / tileCount.x, row / tileCount.y, 1.0);
|
|
309
|
+
}
|
|
310
|
+
#else
|
|
311
|
+
mat3 makeTileTransform(float uvTile) {
|
|
312
|
+
return mat3(1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0);
|
|
313
|
+
}
|
|
314
|
+
#endif
|
|
315
|
+
|
|
316
|
+
#if defined( USE_UV ) || defined( USE_ANISOTROPY )
|
|
317
|
+
|
|
318
|
+
varying vec2 vUv;
|
|
319
|
+
#ifdef TILE_BLEND
|
|
320
|
+
varying vec2 vUvNext;
|
|
321
|
+
varying float vUvBlend;
|
|
322
|
+
#endif
|
|
323
|
+
|
|
324
|
+
#endif
|
|
325
|
+
#ifdef USE_MAP
|
|
326
|
+
|
|
327
|
+
uniform mat3 mapTransform;
|
|
328
|
+
varying vec2 vMapUv;
|
|
329
|
+
#ifdef TILE_BLEND
|
|
330
|
+
varying vec2 vMapUvNext;
|
|
331
|
+
#endif
|
|
332
|
+
|
|
333
|
+
#endif
|
|
334
|
+
#ifdef USE_ALPHAMAP
|
|
335
|
+
|
|
336
|
+
uniform mat3 alphaMapTransform;
|
|
337
|
+
varying vec2 vAlphaMapUv;
|
|
338
|
+
|
|
339
|
+
#endif
|
|
340
|
+
#ifdef USE_LIGHTMAP
|
|
341
|
+
|
|
342
|
+
uniform mat3 lightMapTransform;
|
|
343
|
+
varying vec2 vLightMapUv;
|
|
344
|
+
|
|
345
|
+
#endif
|
|
346
|
+
#ifdef USE_AOMAP
|
|
347
|
+
|
|
348
|
+
uniform mat3 aoMapTransform;
|
|
349
|
+
varying vec2 vAoMapUv;
|
|
350
|
+
|
|
351
|
+
#endif
|
|
352
|
+
#ifdef USE_BUMPMAP
|
|
353
|
+
|
|
354
|
+
uniform mat3 bumpMapTransform;
|
|
355
|
+
varying vec2 vBumpMapUv;
|
|
356
|
+
|
|
357
|
+
#endif
|
|
358
|
+
#ifdef USE_NORMALMAP
|
|
359
|
+
|
|
360
|
+
uniform mat3 normalMapTransform;
|
|
361
|
+
varying vec2 vNormalMapUv;
|
|
362
|
+
|
|
363
|
+
#endif
|
|
364
|
+
#ifdef USE_DISPLACEMENTMAP
|
|
365
|
+
|
|
366
|
+
uniform mat3 displacementMapTransform;
|
|
367
|
+
varying vec2 vDisplacementMapUv;
|
|
368
|
+
|
|
369
|
+
#endif
|
|
370
|
+
#ifdef USE_EMISSIVEMAP
|
|
371
|
+
|
|
372
|
+
uniform mat3 emissiveMapTransform;
|
|
373
|
+
varying vec2 vEmissiveMapUv;
|
|
374
|
+
|
|
375
|
+
#endif
|
|
376
|
+
#ifdef USE_METALNESSMAP
|
|
377
|
+
|
|
378
|
+
uniform mat3 metalnessMapTransform;
|
|
379
|
+
varying vec2 vMetalnessMapUv;
|
|
380
|
+
|
|
381
|
+
#endif
|
|
382
|
+
#ifdef USE_ROUGHNESSMAP
|
|
383
|
+
|
|
384
|
+
uniform mat3 roughnessMapTransform;
|
|
385
|
+
varying vec2 vRoughnessMapUv;
|
|
386
|
+
|
|
387
|
+
#endif
|
|
388
|
+
#ifdef USE_ANISOTROPYMAP
|
|
389
|
+
|
|
390
|
+
uniform mat3 anisotropyMapTransform;
|
|
391
|
+
varying vec2 vAnisotropyMapUv;
|
|
392
|
+
|
|
393
|
+
#endif
|
|
394
|
+
#ifdef USE_CLEARCOATMAP
|
|
395
|
+
|
|
396
|
+
uniform mat3 clearcoatMapTransform;
|
|
397
|
+
varying vec2 vClearcoatMapUv;
|
|
398
|
+
|
|
399
|
+
#endif
|
|
400
|
+
#ifdef USE_CLEARCOAT_NORMALMAP
|
|
401
|
+
|
|
402
|
+
uniform mat3 clearcoatNormalMapTransform;
|
|
403
|
+
varying vec2 vClearcoatNormalMapUv;
|
|
404
|
+
|
|
405
|
+
#endif
|
|
406
|
+
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
|
407
|
+
|
|
408
|
+
uniform mat3 clearcoatRoughnessMapTransform;
|
|
409
|
+
varying vec2 vClearcoatRoughnessMapUv;
|
|
410
|
+
|
|
411
|
+
#endif
|
|
412
|
+
#ifdef USE_SHEEN_COLORMAP
|
|
413
|
+
|
|
414
|
+
uniform mat3 sheenColorMapTransform;
|
|
415
|
+
varying vec2 vSheenColorMapUv;
|
|
416
|
+
|
|
417
|
+
#endif
|
|
418
|
+
#ifdef USE_SHEEN_ROUGHNESSMAP
|
|
419
|
+
|
|
420
|
+
uniform mat3 sheenRoughnessMapTransform;
|
|
421
|
+
varying vec2 vSheenRoughnessMapUv;
|
|
422
|
+
|
|
423
|
+
#endif
|
|
424
|
+
#ifdef USE_IRIDESCENCEMAP
|
|
425
|
+
|
|
426
|
+
uniform mat3 iridescenceMapTransform;
|
|
427
|
+
varying vec2 vIridescenceMapUv;
|
|
428
|
+
|
|
429
|
+
#endif
|
|
430
|
+
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
|
431
|
+
|
|
432
|
+
uniform mat3 iridescenceThicknessMapTransform;
|
|
433
|
+
varying vec2 vIridescenceThicknessMapUv;
|
|
434
|
+
|
|
435
|
+
#endif
|
|
436
|
+
#ifdef USE_SPECULARMAP
|
|
437
|
+
|
|
438
|
+
uniform mat3 specularMapTransform;
|
|
439
|
+
varying vec2 vSpecularMapUv;
|
|
440
|
+
|
|
441
|
+
#endif
|
|
442
|
+
#ifdef USE_SPECULAR_COLORMAP
|
|
443
|
+
|
|
444
|
+
uniform mat3 specularColorMapTransform;
|
|
445
|
+
varying vec2 vSpecularColorMapUv;
|
|
446
|
+
|
|
447
|
+
#endif
|
|
448
|
+
#ifdef USE_SPECULAR_INTENSITYMAP
|
|
449
|
+
|
|
450
|
+
uniform mat3 specularIntensityMapTransform;
|
|
451
|
+
varying vec2 vSpecularIntensityMapUv;
|
|
452
|
+
|
|
453
|
+
#endif
|
|
454
|
+
#ifdef USE_TRANSMISSIONMAP
|
|
455
|
+
|
|
456
|
+
uniform mat3 transmissionMapTransform;
|
|
457
|
+
varying vec2 vTransmissionMapUv;
|
|
458
|
+
|
|
459
|
+
#endif
|
|
460
|
+
#ifdef USE_THICKNESSMAP
|
|
461
|
+
|
|
462
|
+
uniform mat3 thicknessMapTransform;
|
|
463
|
+
varying vec2 vThicknessMapUv;
|
|
464
|
+
|
|
465
|
+
#endif
|
|
466
|
+
`,rh=`
|
|
467
|
+
#ifdef UV_TILE
|
|
468
|
+
mat3 tileTransform = makeTileTransform(floor(uvTile));
|
|
469
|
+
#ifdef TILE_BLEND
|
|
470
|
+
mat3 nextTileTransform = makeTileTransform(ceil(uvTile));
|
|
471
|
+
vUvBlend = fract(uvTile);
|
|
472
|
+
#endif
|
|
473
|
+
#else
|
|
474
|
+
mat3 tileTransform = makeTileTransform(0.0);
|
|
475
|
+
#endif
|
|
476
|
+
|
|
477
|
+
#if defined( USE_UV ) || defined( USE_ANISOTROPY )
|
|
478
|
+
|
|
479
|
+
vUv = (tileTransform *vec3( uv, 1 )).xy;
|
|
480
|
+
#if defined( TILE_BLEND ) && defined( UV_TILE )
|
|
481
|
+
vUvNext = (nextTileTransform *vec3( uv, 1 )).xy;
|
|
482
|
+
#endif
|
|
483
|
+
|
|
484
|
+
#endif
|
|
485
|
+
#ifdef USE_MAP
|
|
486
|
+
|
|
487
|
+
vMapUv = ( tileTransform * (mapTransform * vec3( MAP_UV, 1 ) )).xy;
|
|
488
|
+
#if defined( TILE_BLEND ) && defined( UV_TILE )
|
|
489
|
+
vMapUvNext = (nextTileTransform * (mapTransform * vec3( MAP_UV, 1 ))).xy;
|
|
490
|
+
#endif
|
|
491
|
+
|
|
492
|
+
#endif
|
|
493
|
+
#ifdef USE_ALPHAMAP
|
|
494
|
+
|
|
495
|
+
vAlphaMapUv = ( tileTransform * (alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) )).xy;
|
|
496
|
+
|
|
497
|
+
#endif
|
|
498
|
+
#ifdef USE_LIGHTMAP
|
|
499
|
+
|
|
500
|
+
vLightMapUv = ( tileTransform * (lightMapTransform * vec3( LIGHTMAP_UV, 1 ) )).xy;
|
|
501
|
+
|
|
502
|
+
#endif
|
|
503
|
+
#ifdef USE_AOMAP
|
|
504
|
+
|
|
505
|
+
vAoMapUv = ( tileTransform * (aoMapTransform * vec3( AOMAP_UV, 1 ) )).xy;
|
|
506
|
+
|
|
507
|
+
#endif
|
|
508
|
+
#ifdef USE_BUMPMAP
|
|
509
|
+
|
|
510
|
+
vBumpMapUv = ( tileTransform * (bumpMapTransform * vec3( BUMPMAP_UV, 1 ) )).xy;
|
|
511
|
+
|
|
512
|
+
#endif
|
|
513
|
+
#ifdef USE_NORMALMAP
|
|
514
|
+
|
|
515
|
+
vNormalMapUv = ( tileTransform * (normalMapTransform * vec3( NORMALMAP_UV, 1 ) )).xy;
|
|
516
|
+
|
|
517
|
+
#endif
|
|
518
|
+
#ifdef USE_DISPLACEMENTMAP
|
|
519
|
+
|
|
520
|
+
vDisplacementMapUv = ( tileTransform * (displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) )).xy;
|
|
521
|
+
|
|
522
|
+
#endif
|
|
523
|
+
#ifdef USE_EMISSIVEMAP
|
|
524
|
+
|
|
525
|
+
vEmissiveMapUv = ( tileTransform * (emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) )).xy;
|
|
526
|
+
|
|
527
|
+
#endif
|
|
528
|
+
#ifdef USE_METALNESSMAP
|
|
529
|
+
|
|
530
|
+
vMetalnessMapUv = ( tileTransform * (metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) )).xy;
|
|
531
|
+
|
|
532
|
+
#endif
|
|
533
|
+
#ifdef USE_ROUGHNESSMAP
|
|
534
|
+
|
|
535
|
+
vRoughnessMapUv = ( tileTransform * (roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) )).xy;
|
|
536
|
+
|
|
537
|
+
#endif
|
|
538
|
+
#ifdef USE_ANISOTROPYMAP
|
|
539
|
+
|
|
540
|
+
vAnisotropyMapUv = ( tileTransform * (anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) )).xy;
|
|
541
|
+
|
|
542
|
+
#endif
|
|
543
|
+
#ifdef USE_CLEARCOATMAP
|
|
544
|
+
|
|
545
|
+
vClearcoatMapUv = ( tileTransform * (clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) )).xy;
|
|
546
|
+
|
|
547
|
+
#endif
|
|
548
|
+
#ifdef USE_CLEARCOAT_NORMALMAP
|
|
549
|
+
|
|
550
|
+
vClearcoatNormalMapUv = ( tileTransform * (clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) )).xy;
|
|
551
|
+
|
|
552
|
+
#endif
|
|
553
|
+
#ifdef USE_CLEARCOAT_ROUGHNESSMAP
|
|
554
|
+
|
|
555
|
+
vClearcoatRoughnessMapUv = ( tileTransform * (clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) )).xy;
|
|
556
|
+
|
|
557
|
+
#endif
|
|
558
|
+
#ifdef USE_IRIDESCENCEMAP
|
|
559
|
+
|
|
560
|
+
vIridescenceMapUv = ( tileTransform * (iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) )).xy;
|
|
561
|
+
|
|
562
|
+
#endif
|
|
563
|
+
#ifdef USE_IRIDESCENCE_THICKNESSMAP
|
|
564
|
+
|
|
565
|
+
vIridescenceThicknessMapUv = ( tileTransform * (iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) )).xy;
|
|
566
|
+
|
|
567
|
+
#endif
|
|
568
|
+
#ifdef USE_SHEEN_COLORMAP
|
|
569
|
+
|
|
570
|
+
vSheenColorMapUv = ( tileTransform * (sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) )).xy;
|
|
571
|
+
|
|
572
|
+
#endif
|
|
573
|
+
#ifdef USE_SHEEN_ROUGHNESSMAP
|
|
574
|
+
|
|
575
|
+
vSheenRoughnessMapUv = ( tileTransform * (sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) )).xy;
|
|
576
|
+
|
|
577
|
+
#endif
|
|
578
|
+
#ifdef USE_SPECULARMAP
|
|
579
|
+
|
|
580
|
+
vSpecularMapUv = ( tileTransform * (specularMapTransform * vec3( SPECULARMAP_UV, 1 ) )).xy;
|
|
581
|
+
|
|
582
|
+
#endif
|
|
583
|
+
#ifdef USE_SPECULAR_COLORMAP
|
|
584
|
+
|
|
585
|
+
vSpecularColorMapUv = ( tileTransform * (specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) )).xy;
|
|
586
|
+
|
|
587
|
+
#endif
|
|
588
|
+
#ifdef USE_SPECULAR_INTENSITYMAP
|
|
589
|
+
|
|
590
|
+
vSpecularIntensityMapUv = ( tileTransform * (specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) )).xy;
|
|
591
|
+
|
|
592
|
+
#endif
|
|
593
|
+
#ifdef USE_TRANSMISSIONMAP
|
|
594
|
+
|
|
595
|
+
vTransmissionMapUv = ( tileTransform * transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) )).xy;
|
|
596
|
+
|
|
597
|
+
#endif
|
|
598
|
+
#ifdef USE_THICKNESSMAP
|
|
599
|
+
|
|
600
|
+
vThicknessMapUv = ( tileTransform * thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) )).xy;
|
|
601
|
+
|
|
602
|
+
#endif
|
|
603
|
+
|
|
604
|
+
`;const Ht=R.ShaderChunk;function sh(){Ht.tile_pars_vertex=ih,Ht.tile_vertex=rh,Ht.tile_pars_fragment=nh,Ht.tile_fragment=th,Ht.soft_pars_vertex=Qu,Ht.soft_vertex=eh,Ht.soft_pars_fragment=Ku,Ht.soft_fragment=Zu}class oh extends R.Object3D{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}}exports.RenderMode=void 0;(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"})(exports.RenderMode||(exports.RenderMode={}));class Nc extends R.Mesh{constructor(e){super(),this.type="VFXBatch",this.maxParticles=1e3,this.systems=new Set;const t=new R.Layers;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 ah=new $(0,0,1),vs=new ne,ch=new $,lh=new $;new $;const xa=60,uh=new R.PlaneGeometry(1,1,1,1);class Ir{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!=exports.RenderMode.Trail&&e===exports.RenderMode.Trail||this.rendererSettings.renderMode==exports.RenderMode.Trail&&e!==exports.RenderMode.Trail)&&(this.restart(),this.particles.length=0),this.rendererSettings.renderMode!==e)switch(e){case exports.RenderMode.Trail:this.rendererEmitterSettings={startLength:new ee(30),followLocalOrigin:!1};break;case exports.RenderMode.Mesh:this.rendererEmitterSettings={geometry:new R.PlaneGeometry(1,1)},this.startRotation=new fi(new $(0,1,0),new ee(0));break;case exports.RenderMode.StretchedBillBoard:this.rendererEmitterSettings={speedFactor:0,lengthFactor:2},this.rendererSettings.renderMode===exports.RenderMode.Mesh&&(this.startRotation=new ee(0));break;case exports.RenderMode.BillBoard:case exports.RenderMode.VerticalBillBoard:case exports.RenderMode.HorizontalBillBoard:this.rendererEmitterSettings={},this.rendererSettings.renderMode===exports.RenderMode.Mesh&&(this.startRotation=new ee(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,f,p,m,x,T,g,v,b,_,w,C,P,E,I,O,A,N;if(this.temp=new $,this.travelDistance=0,this.normalMatrix=new At,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 ee(5),this.startSpeed=(i=e.startSpeed)!==null&&i!==void 0?i:new ee(0),this.startRotation=(s=e.startRotation)!==null&&s!==void 0?s:new ee(0),this.startSize=(a=e.startSize)!==null&&a!==void 0?a:new ee(1),this.startColor=(o=e.startColor)!==null&&o!==void 0?o:new pn(new Qe(1,1,1,1)),this.emissionOverTime=(c=e.emissionOverTime)!==null&&c!==void 0?c:new ee(10),this.emissionOverDistance=(l=e.emissionOverDistance)!==null&&l!==void 0?l:new ee(0),this.emissionBursts=(u=e.emissionBursts)!==null&&u!==void 0?u:[],this.onlyUsedByOther=(f=e.onlyUsedByOther)!==null&&f!==void 0?f:!1,this.emitterShape=(p=e.shape)!==null&&p!==void 0?p:new In,this.behaviors=(m=e.behaviors)!==null&&m!==void 0?m:new Array,this.worldSpace=(x=e.worldSpace)!==null&&x!==void 0?x:!1,this.rendererEmitterSettings=(T=e.rendererEmitterSettings)!==null&&T!==void 0?T:{},e.renderMode===exports.RenderMode.StretchedBillBoard){const B=this.rendererEmitterSettings;e.speedFactor!==void 0&&(B.speedFactor=e.speedFactor),B.speedFactor=(g=B.speedFactor)!==null&&g!==void 0?g:0,B.lengthFactor=(v=B.lengthFactor)!==null&&v!==void 0?v:0}this.rendererSettings={instancingGeometry:(b=e.instancingGeometry)!==null&&b!==void 0?b:uh,renderMode:(_=e.renderMode)!==null&&_!==void 0?_:exports.RenderMode.BillBoard,renderOrder:(w=e.renderOrder)!==null&&w!==void 0?w:0,material:e.material,uTileCount:(C=e.uTileCount)!==null&&C!==void 0?C:1,vTileCount:(P=e.vTileCount)!==null&&P!==void 0?P:1,blendTiles:(E=e.blendTiles)!==null&&E!==void 0?E:!1,softParticles:(I=e.softParticles)!==null&&I!==void 0?I:!1,softNearFade:(O=e.softNearFade)!==null&&O!==void 0?O:0,softFarFade:(A=e.softFarFade)!==null&&A!==void 0?A:0,layers:(N=e.layers)!==null&&N!==void 0?N:new R.Layers},this.neededToUpdateRender=!0,this.particles=new Array,this.startTileIndex=e.startTileIndex||new ee(0),this.emitter=new oh(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(B=>B.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){vs.setFromRotationMatrix(n);const i=ch,s=vs,a=lh;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===exports.RenderMode.Trail?this.particles.push(new Or):this.particles.push(new Lu);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===exports.RenderMode.Mesh||this.rendererSettings.renderMode===exports.RenderMode.BillBoard||this.rendererSettings.renderMode===exports.RenderMode.VerticalBillBoard||this.rendererSettings.renderMode===exports.RenderMode.HorizontalBillBoard||this.rendererSettings.renderMode===exports.RenderMode.StretchedBillBoard){const l=c;this.startRotation.startGen(c.memory),this.rendererSettings.renderMode===exports.RenderMode.Mesh?(l.rotation instanceof ne||(l.rotation=new ne),this.startRotation.type==="rotation"?this.startRotation.genValue(c.memory,l.rotation,1,t.time/this.duration):l.rotation.setFromAxisAngle(ah,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===exports.RenderMode.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===exports.RenderMode.Trail&&this.rendererEmitterSettings.followLocalOrigin){const l=c;l.localPosition=new $().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 ne&&c.rotation.multiplyQuaternions(vs,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*xa;n++)this.update(1/xa)}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===exports.RenderMode.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 Or)||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 $),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 o=this.texture.source;e.images[o.uuid]={uuid:o.uuid,url:this.texture.image.url}}let s;this.renderMode===exports.RenderMode.Trail?s={startLength:this.rendererEmitterSettings.startLength.toJSON(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===exports.RenderMode.Mesh?s={}:this.renderMode===exports.RenderMode.StretchedBillBoard?s={speedFactor:this.rendererEmitterSettings.speedFactor,lengthFactor:this.rendererEmitterSettings.lengthFactor}:s={};const a=this.rendererSettings.instancingGeometry;return e.geometries&&!e.geometries[a.uuid]&&(e.geometries[a.uuid]=a.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(o=>({time:o.time,count:o.count.toJSON(),probability:o.probability,interval:o.interval,cycle:o.cycle})),onlyUsedByOther:this.onlyUsedByOther,instancingGeometry:this.rendererSettings.instancingGeometry.uuid,renderOrder:this.renderOrder,renderMode:this.renderMode,rendererEmitterSettings:s,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(o=>o.toJSON()),worldSpace:this.worldSpace}}static fromJSON(e,t,n){var i,s;const a=Du(e.shape,t);let o;if(e.renderMode===exports.RenderMode.Trail){const u=e.rendererEmitterSettings;o={startLength:u.startLength!=null?K(u.startLength):new ee(30),followLocalOrigin:u.followLocalOrigin}}else e.renderMode===exports.RenderMode.Mesh?o={}:e.renderMode===exports.RenderMode.StretchedBillBoard?(o=e.rendererEmitterSettings,e.speedFactor!=null&&(o.speedFactor=e.speedFactor)):o={};const c=new R.Layers;e.layers&&(c.mask=e.layers);const l=new Ir({autoDestroy:e.autoDestroy,looping:e.looping,prewarm:e.prewarm,duration:e.duration,shape:a,startLife:K(e.startLife),startSpeed:K(e.startSpeed),startRotation:Ar(e.startRotation),startSize:Ar(e.startSize),startColor:oo(e.startColor),emissionOverTime:K(e.emissionOverTime),emissionOverDistance:K(e.emissionOverDistance),emissionBursts:(i=e.emissionBursts)===null||i===void 0?void 0:i.map(u=>{var f,p,m;return{time:u.time,count:typeof u.count=="number"?new ee(u.count):K(u.count),probability:(f=u.probability)!==null&&f!==void 0?f:1,interval:(p=u.interval)!==null&&p!==void 0?p:.1,cycle:(m=u.cycle)!==null&&m!==void 0?m: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 R.MeshBasicMaterial({map:t.textures[e.texture],transparent:(s=e.transparent)!==null&&s!==void 0?s:!0,blending:e.blending,side:R.DoubleSide}):new R.MeshBasicMaterial({color:16777215,transparent:!0,blending:R.AdditiveBlending,side:R.DoubleSide}),startTileIndex:typeof e.startTileIndex=="number"?new ee(e.startTileIndex):K(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 f=qu(u,l);return f.type==="EmitSubParticleSystem"&&(n[u.subParticleSystem]=f),f}),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===exports.RenderMode.Trail?n={startLength:this.rendererEmitterSettings.startLength.clone(),followLocalOrigin:this.rendererEmitterSettings.followLocalOrigin}:this.renderMode===exports.RenderMode.StretchedBillBoard?n={lengthFactor:this.rendererEmitterSettings.lengthFactor,speedFactor:this.rendererEmitterSettings.speedFactor}:n={};const i=new R.Layers;return i.mask=this.layers.mask,new Ir({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 Ss=`
|
|
605
|
+
|
|
606
|
+
#include <common>
|
|
607
|
+
#include <color_pars_fragment>
|
|
608
|
+
#include <map_pars_fragment>
|
|
609
|
+
#include <logdepthbuf_pars_fragment>
|
|
610
|
+
#include <clipping_planes_pars_fragment>
|
|
611
|
+
#include <alphatest_pars_fragment>
|
|
612
|
+
|
|
613
|
+
#include <tile_pars_fragment>
|
|
614
|
+
#include <soft_pars_fragment>
|
|
615
|
+
|
|
616
|
+
void main() {
|
|
617
|
+
|
|
618
|
+
#include <clipping_planes_fragment>
|
|
619
|
+
|
|
620
|
+
vec3 outgoingLight = vec3( 0.0 );
|
|
621
|
+
vec4 diffuseColor = vColor;
|
|
622
|
+
|
|
623
|
+
#include <logdepthbuf_fragment>
|
|
624
|
+
|
|
625
|
+
#include <tile_fragment>
|
|
626
|
+
#include <alphatest_fragment>
|
|
627
|
+
|
|
628
|
+
outgoingLight = diffuseColor.rgb;
|
|
629
|
+
|
|
630
|
+
#ifdef USE_COLOR_AS_ALPHA
|
|
631
|
+
gl_FragColor = vec4( outgoingLight, diffuseColor.r );
|
|
632
|
+
#else
|
|
633
|
+
gl_FragColor = vec4( outgoingLight, diffuseColor.a );
|
|
634
|
+
#endif
|
|
635
|
+
|
|
636
|
+
#include <soft_fragment>
|
|
637
|
+
#include <tonemapping_fragment>
|
|
638
|
+
}
|
|
639
|
+
`,ao=`
|
|
640
|
+
#define STANDARD
|
|
641
|
+
|
|
642
|
+
#ifdef PHYSICAL
|
|
643
|
+
#define IOR
|
|
644
|
+
#define USE_SPECULAR
|
|
645
|
+
#endif
|
|
646
|
+
|
|
647
|
+
uniform vec3 diffuse;
|
|
648
|
+
uniform vec3 emissive;
|
|
649
|
+
uniform float roughness;
|
|
650
|
+
uniform float metalness;
|
|
651
|
+
uniform float opacity;
|
|
652
|
+
|
|
653
|
+
#ifdef IOR
|
|
654
|
+
uniform float ior;
|
|
655
|
+
#endif
|
|
656
|
+
|
|
657
|
+
#ifdef USE_SPECULAR
|
|
658
|
+
uniform float specularIntensity;
|
|
659
|
+
uniform vec3 specularColor;
|
|
660
|
+
|
|
661
|
+
#ifdef USE_SPECULAR_COLORMAP
|
|
662
|
+
uniform sampler2D specularColorMap;
|
|
663
|
+
#endif
|
|
664
|
+
|
|
665
|
+
#ifdef USE_SPECULAR_INTENSITYMAP
|
|
666
|
+
uniform sampler2D specularIntensityMap;
|
|
667
|
+
#endif
|
|
668
|
+
#endif
|
|
669
|
+
|
|
670
|
+
#ifdef USE_CLEARCOAT
|
|
671
|
+
uniform float clearcoat;
|
|
672
|
+
uniform float clearcoatRoughness;
|
|
673
|
+
#endif
|
|
674
|
+
|
|
675
|
+
#ifdef USE_DISPERSION
|
|
676
|
+
uniform float dispersion;
|
|
677
|
+
#endif
|
|
678
|
+
|
|
679
|
+
#ifdef USE_IRIDESCENCE
|
|
680
|
+
uniform float iridescence;
|
|
681
|
+
uniform float iridescenceIOR;
|
|
682
|
+
uniform float iridescenceThicknessMinimum;
|
|
683
|
+
uniform float iridescenceThicknessMaximum;
|
|
684
|
+
#endif
|
|
685
|
+
|
|
686
|
+
#ifdef USE_SHEEN
|
|
687
|
+
uniform vec3 sheenColor;
|
|
688
|
+
uniform float sheenRoughness;
|
|
689
|
+
|
|
690
|
+
#ifdef USE_SHEEN_COLORMAP
|
|
691
|
+
uniform sampler2D sheenColorMap;
|
|
692
|
+
#endif
|
|
693
|
+
|
|
694
|
+
#ifdef USE_SHEEN_ROUGHNESSMAP
|
|
695
|
+
uniform sampler2D sheenRoughnessMap;
|
|
696
|
+
#endif
|
|
697
|
+
#endif
|
|
698
|
+
|
|
699
|
+
#ifdef USE_ANISOTROPY
|
|
700
|
+
uniform vec2 anisotropyVector;
|
|
701
|
+
|
|
702
|
+
#ifdef USE_ANISOTROPYMAP
|
|
703
|
+
uniform sampler2D anisotropyMap;
|
|
704
|
+
#endif
|
|
705
|
+
#endif
|
|
706
|
+
|
|
707
|
+
varying vec3 vViewPosition;
|
|
708
|
+
|
|
709
|
+
#include <common>
|
|
710
|
+
#include <packing>
|
|
711
|
+
#include <dithering_pars_fragment>
|
|
712
|
+
#include <color_pars_fragment>
|
|
713
|
+
#include <uv_pars_fragment>
|
|
714
|
+
#include <map_pars_fragment>
|
|
715
|
+
#include <alphamap_pars_fragment>
|
|
716
|
+
#include <alphatest_pars_fragment>
|
|
717
|
+
#include <alphahash_pars_fragment>
|
|
718
|
+
#include <aomap_pars_fragment>
|
|
719
|
+
#include <lightmap_pars_fragment>
|
|
720
|
+
#include <emissivemap_pars_fragment>
|
|
721
|
+
#include <iridescence_fragment>
|
|
722
|
+
#include <cube_uv_reflection_fragment>
|
|
723
|
+
#include <envmap_common_pars_fragment>
|
|
724
|
+
#include <envmap_physical_pars_fragment>
|
|
725
|
+
#include <fog_pars_fragment>
|
|
726
|
+
#include <lights_pars_begin>
|
|
727
|
+
#include <normal_pars_fragment>
|
|
728
|
+
#include <lights_physical_pars_fragment>
|
|
729
|
+
#include <transmission_pars_fragment>
|
|
730
|
+
#include <shadowmap_pars_fragment>
|
|
731
|
+
#include <bumpmap_pars_fragment>
|
|
732
|
+
#include <normalmap_pars_fragment>
|
|
733
|
+
#include <clearcoat_pars_fragment>
|
|
734
|
+
#include <iridescence_pars_fragment>
|
|
735
|
+
#include <roughnessmap_pars_fragment>
|
|
736
|
+
#include <metalnessmap_pars_fragment>
|
|
737
|
+
#include <logdepthbuf_pars_fragment>
|
|
738
|
+
#include <clipping_planes_pars_fragment>
|
|
739
|
+
|
|
740
|
+
void main() {
|
|
741
|
+
|
|
742
|
+
vec4 diffuseColor = vec4( diffuse, opacity );
|
|
743
|
+
#include <clipping_planes_fragment>
|
|
744
|
+
|
|
745
|
+
ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );
|
|
746
|
+
vec3 totalEmissiveRadiance = emissive;
|
|
747
|
+
|
|
748
|
+
#include <logdepthbuf_fragment>
|
|
749
|
+
#include <map_fragment>
|
|
750
|
+
#include <color_fragment>
|
|
751
|
+
#include <alphamap_fragment>
|
|
752
|
+
#include <alphatest_fragment>
|
|
753
|
+
#include <alphahash_fragment>
|
|
754
|
+
#include <roughnessmap_fragment>
|
|
755
|
+
#include <metalnessmap_fragment>
|
|
756
|
+
#include <normal_fragment_begin>
|
|
757
|
+
#include <normal_fragment_maps>
|
|
758
|
+
#include <clearcoat_normal_fragment_begin>
|
|
759
|
+
#include <clearcoat_normal_fragment_maps>
|
|
760
|
+
#include <emissivemap_fragment>
|
|
761
|
+
|
|
762
|
+
// accumulation
|
|
763
|
+
#include <lights_physical_fragment>
|
|
764
|
+
#include <lights_fragment_begin>
|
|
765
|
+
#include <lights_fragment_maps>
|
|
766
|
+
#include <lights_fragment_end>
|
|
767
|
+
|
|
768
|
+
// modulation
|
|
769
|
+
#include <aomap_fragment>
|
|
770
|
+
|
|
771
|
+
vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;
|
|
772
|
+
vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;
|
|
773
|
+
|
|
774
|
+
#include <transmission_fragment>
|
|
775
|
+
|
|
776
|
+
vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;
|
|
777
|
+
|
|
778
|
+
#ifdef USE_SHEEN
|
|
779
|
+
|
|
780
|
+
// Sheen energy compensation approximation calculation can be found at the end of
|
|
781
|
+
// https://drive.google.com/file/d/1T0D1VSyR4AllqIJTQAraEIzjlb5h4FKH/view?usp=sharing
|
|
782
|
+
float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );
|
|
783
|
+
|
|
784
|
+
outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;
|
|
785
|
+
|
|
786
|
+
#endif
|
|
787
|
+
|
|
788
|
+
#ifdef USE_CLEARCOAT
|
|
789
|
+
|
|
790
|
+
float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );
|
|
791
|
+
|
|
792
|
+
vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );
|
|
793
|
+
|
|
794
|
+
outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;
|
|
795
|
+
|
|
796
|
+
#endif
|
|
797
|
+
|
|
798
|
+
#include <opaque_fragment>
|
|
799
|
+
#include <tonemapping_fragment>
|
|
800
|
+
#include <colorspace_fragment>
|
|
801
|
+
#include <fog_fragment>
|
|
802
|
+
#include <premultiplied_alpha_fragment>
|
|
803
|
+
#include <dithering_fragment>
|
|
804
|
+
}`,hh=`
|
|
805
|
+
#include <common>
|
|
806
|
+
#include <color_pars_vertex>
|
|
807
|
+
#include <logdepthbuf_pars_vertex>
|
|
808
|
+
#include <clipping_planes_pars_vertex>
|
|
809
|
+
|
|
810
|
+
#include <tile_pars_vertex>
|
|
811
|
+
#include <soft_pars_vertex>
|
|
812
|
+
|
|
813
|
+
attribute vec3 offset;
|
|
814
|
+
attribute float rotation;
|
|
815
|
+
attribute vec3 size;
|
|
816
|
+
|
|
817
|
+
void main() {
|
|
818
|
+
|
|
819
|
+
vec2 alignedPosition = position.xy * size.xy;
|
|
820
|
+
|
|
821
|
+
vec2 rotatedPosition;
|
|
822
|
+
rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;
|
|
823
|
+
rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;
|
|
824
|
+
#ifdef HORIZONTAL
|
|
825
|
+
vec4 mvPosition = modelMatrix * vec4( offset, 1.0 );
|
|
826
|
+
mvPosition.x += rotatedPosition.x;
|
|
827
|
+
mvPosition.z -= rotatedPosition.y;
|
|
828
|
+
mvPosition = viewMatrix * mvPosition;
|
|
829
|
+
#elif defined(VERTICAL)
|
|
830
|
+
vec4 mvPosition = modelMatrix * vec4( offset, 1.0 );
|
|
831
|
+
mvPosition.y += rotatedPosition.y;
|
|
832
|
+
mvPosition = viewMatrix * mvPosition;
|
|
833
|
+
mvPosition.x += rotatedPosition.x;
|
|
834
|
+
#else
|
|
835
|
+
vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 );
|
|
836
|
+
mvPosition.xy += rotatedPosition;
|
|
837
|
+
#endif
|
|
838
|
+
|
|
839
|
+
vColor = color;
|
|
840
|
+
|
|
841
|
+
gl_Position = projectionMatrix * mvPosition;
|
|
842
|
+
|
|
843
|
+
#include <logdepthbuf_vertex>
|
|
844
|
+
|
|
845
|
+
#include <clipping_planes_vertex>
|
|
846
|
+
|
|
847
|
+
#include <tile_vertex>
|
|
848
|
+
#include <soft_vertex>
|
|
849
|
+
}
|
|
850
|
+
`,fh=`
|
|
851
|
+
#include <common>
|
|
852
|
+
#include <color_pars_vertex>
|
|
853
|
+
#include <logdepthbuf_pars_vertex>
|
|
854
|
+
#include <clipping_planes_pars_vertex>
|
|
855
|
+
#include <tile_pars_vertex>
|
|
856
|
+
#include <soft_pars_vertex>
|
|
857
|
+
|
|
858
|
+
attribute vec3 offset;
|
|
859
|
+
attribute vec4 rotation;
|
|
860
|
+
attribute vec3 size;
|
|
861
|
+
// attribute vec4 color;
|
|
862
|
+
|
|
863
|
+
void main() {
|
|
864
|
+
|
|
865
|
+
float x2 = rotation.x + rotation.x, y2 = rotation.y + rotation.y, z2 = rotation.z + rotation.z;
|
|
866
|
+
float xx = rotation.x * x2, xy = rotation.x * y2, xz = rotation.x * z2;
|
|
867
|
+
float yy = rotation.y * y2, yz = rotation.y * z2, zz = rotation.z * z2;
|
|
868
|
+
float wx = rotation.w * x2, wy = rotation.w * y2, wz = rotation.w * z2;
|
|
869
|
+
float sx = size.x, sy = size.y, sz = size.z;
|
|
870
|
+
|
|
871
|
+
mat4 matrix = mat4(( 1.0 - ( yy + zz ) ) * sx, ( xy + wz ) * sx, ( xz - wy ) * sx, 0.0, // 1. column
|
|
872
|
+
( xy - wz ) * sy, ( 1.0 - ( xx + zz ) ) * sy, ( yz + wx ) * sy, 0.0, // 2. column
|
|
873
|
+
( xz + wy ) * sz, ( yz - wx ) * sz, ( 1.0 - ( xx + yy ) ) * sz, 0.0, // 3. column
|
|
874
|
+
offset.x, offset.y, offset.z, 1.0);
|
|
875
|
+
|
|
876
|
+
vec4 mvPosition = modelViewMatrix * (matrix * vec4( position, 1.0 ));
|
|
877
|
+
|
|
878
|
+
vColor = color;
|
|
879
|
+
|
|
880
|
+
gl_Position = projectionMatrix * mvPosition;
|
|
881
|
+
|
|
882
|
+
#include <logdepthbuf_vertex>
|
|
883
|
+
#include <clipping_planes_vertex>
|
|
884
|
+
#include <tile_vertex>
|
|
885
|
+
#include <soft_vertex>
|
|
886
|
+
}
|
|
887
|
+
`,co=`
|
|
888
|
+
#define STANDARD
|
|
889
|
+
varying vec3 vViewPosition;
|
|
890
|
+
#ifdef USE_TRANSMISSION
|
|
891
|
+
varying vec3 vWorldPosition;
|
|
892
|
+
#endif
|
|
893
|
+
#include <common>
|
|
894
|
+
|
|
895
|
+
attribute vec3 offset;
|
|
896
|
+
attribute vec4 rotation;
|
|
897
|
+
attribute vec3 size;
|
|
898
|
+
#include <tile_pars_vertex>
|
|
899
|
+
#include <displacementmap_pars_vertex>
|
|
900
|
+
#include <color_pars_vertex>
|
|
901
|
+
#include <fog_pars_vertex>
|
|
902
|
+
#include <normal_pars_vertex>
|
|
903
|
+
#include <morphtarget_pars_vertex>
|
|
904
|
+
#include <skinning_pars_vertex>
|
|
905
|
+
#include <shadowmap_pars_vertex>
|
|
906
|
+
#include <logdepthbuf_pars_vertex>
|
|
907
|
+
#include <clipping_planes_pars_vertex>
|
|
908
|
+
|
|
909
|
+
void main() {
|
|
910
|
+
|
|
911
|
+
#include <tile_vertex>
|
|
912
|
+
float x2 = rotation.x + rotation.x, y2 = rotation.y + rotation.y, z2 = rotation.z + rotation.z;
|
|
913
|
+
float xx = rotation.x * x2, xy = rotation.x * y2, xz = rotation.x * z2;
|
|
914
|
+
float yy = rotation.y * y2, yz = rotation.y * z2, zz = rotation.z * z2;
|
|
915
|
+
float wx = rotation.w * x2, wy = rotation.w * y2, wz = rotation.w * z2;
|
|
916
|
+
float sx = size.x, sy = size.y, sz = size.z;
|
|
917
|
+
|
|
918
|
+
mat4 particleMatrix = mat4(( 1.0 - ( yy + zz ) ) * sx, ( xy + wz ) * sx, ( xz - wy ) * sx, 0.0, // 1. column
|
|
919
|
+
( xy - wz ) * sy, ( 1.0 - ( xx + zz ) ) * sy, ( yz + wx ) * sy, 0.0, // 2. column
|
|
920
|
+
( xz + wy ) * sz, ( yz - wx ) * sz, ( 1.0 - ( xx + yy ) ) * sz, 0.0, // 3. column
|
|
921
|
+
offset.x, offset.y, offset.z, 1.0);
|
|
922
|
+
|
|
923
|
+
#include <color_vertex>
|
|
924
|
+
#include <morphinstance_vertex>
|
|
925
|
+
#include <morphcolor_vertex>
|
|
926
|
+
#include <batching_vertex>
|
|
927
|
+
|
|
928
|
+
#include <beginnormal_vertex>
|
|
929
|
+
#include <morphnormal_vertex>
|
|
930
|
+
#include <skinbase_vertex>
|
|
931
|
+
#include <skinnormal_vertex>
|
|
932
|
+
|
|
933
|
+
// replace defaultnormal_vertex
|
|
934
|
+
vec3 transformedNormal = objectNormal;
|
|
935
|
+
mat3 m = mat3( particleMatrix );
|
|
936
|
+
transformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );
|
|
937
|
+
transformedNormal = m * transformedNormal;
|
|
938
|
+
transformedNormal = normalMatrix * transformedNormal;
|
|
939
|
+
#ifdef FLIP_SIDED
|
|
940
|
+
transformedNormal = - transformedNormal;
|
|
941
|
+
#endif
|
|
942
|
+
#ifdef USE_TANGENT
|
|
943
|
+
vec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;
|
|
944
|
+
#ifdef FLIP_SIDED
|
|
945
|
+
transformedTangent = - transformedTangent;
|
|
946
|
+
#endif
|
|
947
|
+
#endif
|
|
948
|
+
|
|
949
|
+
#include <normal_vertex>
|
|
950
|
+
#include <begin_vertex>
|
|
951
|
+
#include <morphtarget_vertex>
|
|
952
|
+
#include <skinning_vertex>
|
|
953
|
+
#include <displacementmap_vertex>
|
|
954
|
+
|
|
955
|
+
// replace include <project_vertex>
|
|
956
|
+
vec4 mvPosition = vec4( transformed, 1.0 );
|
|
957
|
+
mvPosition = modelViewMatrix * (particleMatrix * mvPosition);
|
|
958
|
+
gl_Position = projectionMatrix * mvPosition;
|
|
959
|
+
|
|
960
|
+
#include <logdepthbuf_vertex>
|
|
961
|
+
#include <clipping_planes_vertex>
|
|
962
|
+
|
|
963
|
+
vViewPosition = - mvPosition.xyz;
|
|
964
|
+
|
|
965
|
+
#include <worldpos_vertex>
|
|
966
|
+
#include <shadowmap_vertex>
|
|
967
|
+
#include <fog_vertex>
|
|
968
|
+
#ifdef USE_TRANSMISSION
|
|
969
|
+
vWorldPosition = worldPosition.xyz;
|
|
970
|
+
#endif
|
|
971
|
+
}
|
|
972
|
+
`,dh=`
|
|
973
|
+
#include <common>
|
|
974
|
+
#include <color_pars_vertex>
|
|
975
|
+
#include <logdepthbuf_pars_vertex>
|
|
976
|
+
#include <clipping_planes_pars_vertex>
|
|
977
|
+
|
|
978
|
+
#include <tile_pars_vertex>
|
|
979
|
+
#include <soft_pars_vertex>
|
|
980
|
+
|
|
981
|
+
attribute vec3 offset;
|
|
982
|
+
attribute float rotation;
|
|
983
|
+
attribute vec3 size;
|
|
984
|
+
attribute vec4 velocity;
|
|
985
|
+
|
|
986
|
+
uniform float speedFactor;
|
|
987
|
+
|
|
988
|
+
void main() {
|
|
989
|
+
float lengthFactor = velocity.w;
|
|
990
|
+
float avgSize = (size.x + size.y) * 0.5;
|
|
991
|
+
#ifdef USE_SKEW
|
|
992
|
+
vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 );
|
|
993
|
+
vec3 viewVelocity = normalMatrix * velocity.xyz;
|
|
994
|
+
|
|
995
|
+
vec3 scaledPos = vec3(position.xy * size.xy, position.z);
|
|
996
|
+
float vlength = length(viewVelocity);
|
|
997
|
+
vec3 projVelocity = dot(scaledPos, viewVelocity) * viewVelocity / vlength;
|
|
998
|
+
mvPosition.xyz += scaledPos + projVelocity * (speedFactor / avgSize + lengthFactor / vlength);
|
|
999
|
+
#else
|
|
1000
|
+
vec4 mvPosition = modelViewMatrix * vec4( offset, 1.0 );
|
|
1001
|
+
vec3 viewVelocity = normalMatrix * velocity.xyz;
|
|
1002
|
+
float vlength = length(viewVelocity);
|
|
1003
|
+
mvPosition.xyz += position.y * normalize(cross(mvPosition.xyz, viewVelocity)) * avgSize; // switch the cross to match unity implementation
|
|
1004
|
+
mvPosition.xyz -= (position.x + 0.5) * viewVelocity * (1.0 + lengthFactor / vlength) * avgSize; // minus position.x to match unity implementation
|
|
1005
|
+
#endif
|
|
1006
|
+
vColor = color;
|
|
1007
|
+
gl_Position = projectionMatrix * mvPosition;
|
|
1008
|
+
#include <logdepthbuf_vertex>
|
|
1009
|
+
#include <clipping_planes_vertex>
|
|
1010
|
+
#include <tile_vertex>
|
|
1011
|
+
#include <soft_vertex>
|
|
1012
|
+
}
|
|
1013
|
+
`;function Gs(r){return r===0?"uv":`uv${r}`}class ph extends R.MeshStandardMaterial{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=co,e.fragmentShader=ao}}class mh extends R.MeshPhysicalMaterial{constructor(e){super(e)}onBeforeCompile(e,t){super.onBeforeCompile(e,t),e.vertexShader=co,e.fragmentShader=ao}}class yh extends Nc{constructor(e){super(e),this.vector_=new $,this.vector2_=new $,this.vector3_=new $,this.quaternion_=new ne,this.quaternion2_=new ne,this.quaternion3_=new ne,this.rotationMat_=new At,this.rotationMat2_=new At,this.maxParticles=1e3,this.setupBuffers(),this.rebuildMaterial()}buildExpandableBuffers(){this.offsetBuffer=new R.InstancedBufferAttribute(new Float32Array(this.maxParticles*3),3),this.offsetBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("offset",this.offsetBuffer),this.colorBuffer=new R.InstancedBufferAttribute(new Float32Array(this.maxParticles*4),4),this.colorBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("color",this.colorBuffer),this.settings.renderMode===exports.RenderMode.Mesh?(this.rotationBuffer=new R.InstancedBufferAttribute(new Float32Array(this.maxParticles*4),4),this.rotationBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("rotation",this.rotationBuffer)):(this.settings.renderMode===exports.RenderMode.BillBoard||this.settings.renderMode===exports.RenderMode.HorizontalBillBoard||this.settings.renderMode===exports.RenderMode.VerticalBillBoard||this.settings.renderMode===exports.RenderMode.StretchedBillBoard)&&(this.rotationBuffer=new R.InstancedBufferAttribute(new Float32Array(this.maxParticles),1),this.rotationBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("rotation",this.rotationBuffer)),this.sizeBuffer=new R.InstancedBufferAttribute(new Float32Array(this.maxParticles*3),3),this.sizeBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("size",this.sizeBuffer),this.uvTileBuffer=new R.InstancedBufferAttribute(new Float32Array(this.maxParticles),1),this.uvTileBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("uvTile",this.uvTileBuffer),this.settings.renderMode===exports.RenderMode.StretchedBillBoard&&(this.velocityBuffer=new R.InstancedBufferAttribute(new Float32Array(this.maxParticles*4),4),this.velocityBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("velocity",this.velocityBuffer))}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new R.InstancedBufferGeometry,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 R.Uniform$1(this.settings.material.map)),this.settings.material.alphaTest&&(t.USE_ALPHATEST="",e.alphaTest=new R.Uniform$1(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 R.Uniform$1(new On(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=Gs(this.settings.material.normalMap.channel),e.normalMapTransform=new R.Uniform$1(new At().copy(this.settings.material.normalMap.matrix))),this.settings.material.map&&(t.USE_MAP="",this.settings.blendTiles&&(t.TILE_BLEND=""),t.MAP_UV=Gs(this.settings.material.map.channel),e.mapTransform=new R.Uniform$1(new At().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 R.Uniform$1(new On(o,c)),e.depthTexture=new R.Uniform$1(null);const l=e.projParams=new R.Uniform$1(new Qe);s=(u,f,p)=>{l.value.set(p.near,p.far,0,0)}}let a=!1;if(this.settings.renderMode===exports.RenderMode.BillBoard||this.settings.renderMode===exports.RenderMode.VerticalBillBoard||this.settings.renderMode===exports.RenderMode.HorizontalBillBoard||this.settings.renderMode===exports.RenderMode.Mesh){let o,c;this.settings.renderMode===exports.RenderMode.Mesh?this.settings.material.type==="MeshStandardMaterial"||this.settings.material.type==="MeshPhysicalMaterial"?(t.USE_COLOR="",o=co,c=ao,a=!0):(o=fh,c=Ss):(o=hh,c=Ss),this.settings.renderMode===exports.RenderMode.VerticalBillBoard?t.VERTICAL="":this.settings.renderMode===exports.RenderMode.HorizontalBillBoard&&(t.HORIZONTAL="");let l=!1;this.settings.renderMode===exports.RenderMode.Mesh&&(this.settings.material.type==="MeshStandardMaterial"?(this.material=new ph({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,l=!0):this.settings.material.type==="MeshPhysicalMaterial"&&(this.material=new mh({}),this.material.copy(this.settings.material),this.material.uniforms=e,this.material.defines=t,l=!0)),l||(this.material=new R.ShaderMaterial({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===exports.RenderMode.StretchedBillBoard)e.speedFactor=new R.Uniform$1(1),this.material=new R.ShaderMaterial({uniforms:e,defines:t,vertexShader:dh,fragmentShader:Ss,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===exports.RenderMode.Mesh){let p;if(n.worldSpace)p=u.rotation;else{let m;u.parentMatrix?m=this.quaternion3_.setFromRotationMatrix(u.parentMatrix):m=a,p=this.quaternion_,p.copy(m).multiply(u.rotation)}this.rotationBuffer.setXYZW(e,p.x,p.y,p.z,p.w)}else(this.settings.renderMode===exports.RenderMode.StretchedBillBoard||this.settings.renderMode===exports.RenderMode.VerticalBillBoard||this.settings.renderMode===exports.RenderMode.HorizontalBillBoard||this.settings.renderMode===exports.RenderMode.BillBoard)&&this.rotationBuffer.setX(e,u.rotation);let f;if(n.worldSpace?f=u.position:(f=this.vector_,u.parentMatrix?f.copy(u.position).applyMatrix4(u.parentMatrix):f.copy(u.position).applyMatrix4(n.emitter.matrixWorld)),this.offsetBuffer.setXYZ(e,f.x,f.y,f.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===exports.RenderMode.StretchedBillBoard&&this.velocityBuffer){let p=n.rendererEmitterSettings.speedFactor;p===0&&(p=.001);const m=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*p,x.y*p,x.z*p,m)}}}),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===exports.RenderMode.StretchedBillBoard&&this.velocityBuffer&&(this.velocityBuffer.clearUpdateRanges(),this.velocityBuffer.addUpdateRange(0,e*4),this.velocityBuffer.needsUpdate=!0),this.settings.renderMode===exports.RenderMode.Mesh?(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e*4),this.rotationBuffer.needsUpdate=!0):(this.settings.renderMode===exports.RenderMode.StretchedBillBoard||this.settings.renderMode===exports.RenderMode.HorizontalBillBoard||this.settings.renderMode===exports.RenderMode.VerticalBillBoard||this.settings.renderMode===exports.RenderMode.BillBoard)&&(this.rotationBuffer.clearUpdateRanges(),this.rotationBuffer.addUpdateRange(0,e),this.rotationBuffer.needsUpdate=!0))}dispose(){this.geometry.dispose()}}var gh=`
|
|
1014
|
+
|
|
1015
|
+
#include <common>
|
|
1016
|
+
#include <tile_pars_fragment>
|
|
1017
|
+
#include <map_pars_fragment>
|
|
1018
|
+
#include <fog_pars_fragment>
|
|
1019
|
+
#include <logdepthbuf_pars_fragment>
|
|
1020
|
+
#include <clipping_planes_pars_fragment>
|
|
1021
|
+
|
|
1022
|
+
uniform sampler2D alphaMap;
|
|
1023
|
+
uniform float useAlphaMap;
|
|
1024
|
+
uniform float visibility;
|
|
1025
|
+
uniform float alphaTest;
|
|
1026
|
+
|
|
1027
|
+
varying vec4 vColor;
|
|
1028
|
+
|
|
1029
|
+
void main() {
|
|
1030
|
+
#include <clipping_planes_fragment>
|
|
1031
|
+
#include <logdepthbuf_fragment>
|
|
1032
|
+
|
|
1033
|
+
vec4 diffuseColor = vColor;
|
|
1034
|
+
|
|
1035
|
+
#ifdef USE_MAP
|
|
1036
|
+
#include <tile_fragment>
|
|
1037
|
+
#ifndef USE_COLOR_AS_ALPHA
|
|
1038
|
+
#endif
|
|
1039
|
+
#endif
|
|
1040
|
+
if( useAlphaMap == 1. ) diffuseColor.a *= texture2D( alphaMap, vUv).a;
|
|
1041
|
+
if( diffuseColor.a < alphaTest ) discard;
|
|
1042
|
+
gl_FragColor = diffuseColor;
|
|
1043
|
+
|
|
1044
|
+
#include <fog_fragment>
|
|
1045
|
+
#include <tonemapping_fragment>
|
|
1046
|
+
}`,vh=`
|
|
1047
|
+
#include <common>
|
|
1048
|
+
#include <tile_pars_vertex>
|
|
1049
|
+
#include <color_pars_vertex>
|
|
1050
|
+
#include <clipping_planes_pars_vertex>
|
|
1051
|
+
#include <logdepthbuf_pars_vertex>
|
|
1052
|
+
#include <fog_pars_vertex>
|
|
1053
|
+
|
|
1054
|
+
attribute vec3 previous;
|
|
1055
|
+
attribute vec3 next;
|
|
1056
|
+
attribute float side;
|
|
1057
|
+
attribute float width;
|
|
1058
|
+
|
|
1059
|
+
uniform vec2 resolution;
|
|
1060
|
+
uniform float lineWidth;
|
|
1061
|
+
uniform float sizeAttenuation;
|
|
1062
|
+
|
|
1063
|
+
vec2 fix(vec4 i, float aspect) {
|
|
1064
|
+
vec2 res = i.xy / i.w;
|
|
1065
|
+
res.x *= aspect;
|
|
1066
|
+
return res;
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
void main() {
|
|
1070
|
+
|
|
1071
|
+
#include <tile_vertex>
|
|
1072
|
+
|
|
1073
|
+
float aspect = resolution.x / resolution.y;
|
|
1074
|
+
|
|
1075
|
+
vColor = color;
|
|
1076
|
+
|
|
1077
|
+
mat4 m = projectionMatrix * modelViewMatrix;
|
|
1078
|
+
vec4 finalPosition = m * vec4( position, 1.0 );
|
|
1079
|
+
vec4 prevPos = m * vec4( previous, 1.0 );
|
|
1080
|
+
vec4 nextPos = m * vec4( next, 1.0 );
|
|
1081
|
+
|
|
1082
|
+
vec2 currentP = fix( finalPosition, aspect );
|
|
1083
|
+
vec2 prevP = fix( prevPos, aspect );
|
|
1084
|
+
vec2 nextP = fix( nextPos, aspect );
|
|
1085
|
+
|
|
1086
|
+
float w = lineWidth * width;
|
|
1087
|
+
|
|
1088
|
+
vec2 dir;
|
|
1089
|
+
if( nextP == currentP ) dir = normalize( currentP - prevP );
|
|
1090
|
+
else if( prevP == currentP ) dir = normalize( nextP - currentP );
|
|
1091
|
+
else {
|
|
1092
|
+
vec2 dir1 = normalize( currentP - prevP );
|
|
1093
|
+
vec2 dir2 = normalize( nextP - currentP );
|
|
1094
|
+
dir = normalize( dir1 + dir2 );
|
|
1095
|
+
|
|
1096
|
+
vec2 perp = vec2( -dir1.y, dir1.x );
|
|
1097
|
+
vec2 miter = vec2( -dir.y, dir.x );
|
|
1098
|
+
//w = clamp( w / dot( miter, perp ), 0., 4., * lineWidth * width );
|
|
1099
|
+
|
|
1100
|
+
}
|
|
1101
|
+
|
|
1102
|
+
//vec2 normal = ( cross( vec3( dir, 0. ) vec3( 0., 0., 1. ) ) ).xy;
|
|
1103
|
+
vec4 normal = vec4( -dir.y, dir.x, 0., 1. );
|
|
1104
|
+
normal.xy *= .5 * w;
|
|
1105
|
+
normal *= projectionMatrix;
|
|
1106
|
+
if( sizeAttenuation == 0. ) {
|
|
1107
|
+
normal.xy *= finalPosition.w;
|
|
1108
|
+
normal.xy /= ( vec4( resolution, 0., 1. ) * projectionMatrix ).xy;
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
finalPosition.xy += normal.xy * side;
|
|
1112
|
+
|
|
1113
|
+
gl_Position = finalPosition;
|
|
1114
|
+
|
|
1115
|
+
#include <logdepthbuf_vertex>
|
|
1116
|
+
#include <clipping_planes_vertex>
|
|
1117
|
+
|
|
1118
|
+
vec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );
|
|
1119
|
+
|
|
1120
|
+
#include <fog_vertex>
|
|
1121
|
+
}`;class Sh extends Nc{constructor(e){super(e),this.vector_=new $,this.vector2_=new $,this.vector3_=new $,this.quaternion_=new ne,this.maxParticles=1e4,this.setupBuffers(),this.rebuildMaterial()}setupBuffers(){this.geometry&&this.geometry.dispose(),this.geometry=new R.BufferGeometry,this.indexBuffer=new R.BufferAttribute(new Uint32Array(this.maxParticles*6),1),this.indexBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setIndex(this.indexBuffer),this.positionBuffer=new R.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.positionBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("position",this.positionBuffer),this.previousBuffer=new R.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.previousBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("previous",this.previousBuffer),this.nextBuffer=new R.BufferAttribute(new Float32Array(this.maxParticles*6),3),this.nextBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("next",this.nextBuffer),this.widthBuffer=new R.BufferAttribute(new Float32Array(this.maxParticles*2),1),this.widthBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("width",this.widthBuffer),this.sideBuffer=new R.BufferAttribute(new Float32Array(this.maxParticles*2),1),this.sideBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("side",this.sideBuffer),this.uvBuffer=new R.BufferAttribute(new Float32Array(this.maxParticles*4),2),this.uvBuffer.setUsage(R.DynamicDrawUsage),this.geometry.setAttribute("uv",this.uvBuffer),this.colorBuffer=new R.BufferAttribute(new Float32Array(this.maxParticles*8),4),this.colorBuffer.setUsage(R.DynamicDrawUsage),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 On(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=Gs(this.settings.material.map.channel),e.map=new R.Uniform$1(this.settings.material.map),e.mapTransform=new R.Uniform$1(new At().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===exports.RenderMode.Trail)this.material=new R.ShaderMaterial({uniforms:e,defines:t,vertexShader:vh,fragmentShader:gh,transparent:this.settings.material.transparent,depthWrite:!this.settings.material.transparent,side:this.settings.material.side,blending:this.settings.material.blending||R.AdditiveBlending,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,f=this.settings.vTileCount,p=1/u,m=1/f;for(let x=0;x<l;x++){const T=c[x],g=T.uvTile%f,v=Math.floor(T.uvTile/f+.001),b=T.previous.values();let _=b.next(),w=_.value,C=w;_.done||(_=b.next());let P;_.value!==void 0?P=_.value:P=C;for(let E=0;E<T.previous.length;E++,e+=2){if(this.positionBuffer.setXYZ(e,C.position.x,C.position.y,C.position.z),this.positionBuffer.setXYZ(e+1,C.position.x,C.position.y,C.position.z),i.worldSpace?(this.positionBuffer.setXYZ(e,C.position.x,C.position.y,C.position.z),this.positionBuffer.setXYZ(e+1,C.position.x,C.position.y,C.position.z)):(T.parentMatrix?this.vector_.copy(C.position).applyMatrix4(T.parentMatrix):this.vector_.copy(C.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,w.position.x,w.position.y,w.position.z),this.previousBuffer.setXYZ(e+1,w.position.x,w.position.y,w.position.z)):(T.parentMatrix?this.vector_.copy(w.position).applyMatrix4(T.parentMatrix):this.vector_.copy(w.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,P.position.x,P.position.y,P.position.z),this.nextBuffer.setXYZ(e+1,P.position.x,P.position.y,P.position.z)):(T.parentMatrix?this.vector_.copy(P.position).applyMatrix4(T.parentMatrix):this.vector_.copy(P.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,C.size),this.widthBuffer.setX(e+1,C.size);else if(T.parentMatrix)this.widthBuffer.setX(e,C.size),this.widthBuffer.setX(e+1,C.size);else{const I=(Math.abs(o.x)+Math.abs(o.y)+Math.abs(o.z))/3;this.widthBuffer.setX(e,C.size*I),this.widthBuffer.setX(e+1,C.size*I)}this.uvBuffer.setXY(e,(E/T.previous.length+g)*p,(f-v-1)*m),this.uvBuffer.setXY(e+1,(E/T.previous.length+g)*p,(f-v)*m),this.colorBuffer.setXYZW(e,C.color.x,C.color.y,C.color.z,C.color.w),this.colorBuffer.setXYZW(e+1,C.color.x,C.color.y,C.color.z,C.color.w),E+1<T.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++),w=C,C=P,_.done||(_=b.next(),_.value!==void 0&&(P=_.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 Di{get geometry(){return this._geometry}set geometry(e){if(this._geometry=e,e===void 0||typeof e=="string")return;const t=new R.Triangle;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 R.Vector3,this._tempB=new R.Vector3,this._tempC=new R.Vector3,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 m=Math.floor((i+s)/2);a<this._triangleIndexToArea[m]?s=m:i=m}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],f=t.getIndex().array[i*3+2],p=t.getAttribute("position");this._tempA.fromBufferAttribute(p,l),this._tempB.fromBufferAttribute(p,u),this._tempC.fromBufferAttribute(p,f),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 Di(t.geometries[e.geometry])}clone(){return new Di(this._geometry)}update(e,t){}}Yu({id:"three.quarks",emitterShapes:[{type:"mesh_surface",params:[["geometry",["geometry"]]],constructor:Di,loadJSON:Di.fromJSON}],behaviors:[]});class lo extends R.Object3D{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(lo.equals(this.batches[i].settings,t)){this.batches[i].addSystem(e),this.systemToBatchIndex.set(e,i);return}let n;switch(t.renderMode){case exports.RenderMode.Trail:n=new Sh(t);break;case exports.RenderMode.Mesh:case exports.RenderMode.BillBoard:case exports.RenderMode.VerticalBillBoard:case exports.RenderMode.HorizontalBillBoard:case exports.RenderMode.StretchedBillBoard:n=new yh(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 xh=lo;sh();console.log("%c Particle system powered by three.quarks. https://quarks.art/","font-size: 14px; font-weight: bold;");const Uc=Math.sqrt(5),_h=(Uc-1)/4,ze=(5-Uc)/20,nr=r=>Math.floor(r)|0,ir=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 bh(r=Math.random){const e=Th(r),t=new Float64Array(e).map(a=>ir[a%32*4]),n=new Float64Array(e).map(a=>ir[a%32*4+1]),i=new Float64Array(e).map(a=>ir[a%32*4+2]),s=new Float64Array(e).map(a=>ir[a%32*4+3]);return function(o,c,l,u){let f,p,m,x,T;const g=(o+c+l+u)*_h,v=nr(o+g),b=nr(c+g),_=nr(l+g),w=nr(u+g),C=(v+b+_+w)*ze,P=v-C,E=b-C,I=_-C,O=w-C,A=o-P,N=c-E,B=l-I,D=u-O;let L=0,J=0,W=0,Y=0;A>N?L++:J++,A>B?L++:W++,A>D?L++:Y++,N>B?J++:W++,N>D?J++:Y++,B>D?W++:Y++;const G=L>=3?1:0,se=J>=3?1:0,ce=W>=3?1:0,me=Y>=3?1:0,le=L>=2?1:0,xe=J>=2?1:0,Ce=W>=2?1:0,ye=Y>=2?1:0,de=L>=1?1:0,oe=J>=1?1:0,et=W>=1?1:0,We=Y>=1?1:0,He=A-G+ze,tt=N-se+ze,Ae=B-ce+ze,pe=D-me+ze,ie=A-le+2*ze,st=N-xe+2*ze,we=B-Ce+2*ze,ue=D-ye+2*ze,qe=A-de+3*ze,mt=N-oe+3*ze,yt=B-et+3*ze,Xe=D-We+3*ze,gt=A-1+4*ze,ot=N-1+4*ze,at=B-1+4*ze,vt=D-1+4*ze,Pe=v&255,Ve=b&255,nt=_&255,Je=w&255;let Q=.6-A*A-N*N-B*B-D*D;if(Q<0)f=0;else{const ae=Pe+e[Ve+e[nt+e[Je]]];Q*=Q,f=Q*Q*(t[ae]*A+n[ae]*N+i[ae]*B+s[ae]*D)}let St=.6-He*He-tt*tt-Ae*Ae-pe*pe;if(St<0)p=0;else{const ae=Pe+G+e[Ve+se+e[nt+ce+e[Je+me]]];St*=St,p=St*St*(t[ae]*He+n[ae]*tt+i[ae]*Ae+s[ae]*pe)}let zt=.6-ie*ie-st*st-we*we-ue*ue;if(zt<0)m=0;else{const ae=Pe+le+e[Ve+xe+e[nt+Ce+e[Je+ye]]];zt*=zt,m=zt*zt*(t[ae]*ie+n[ae]*st+i[ae]*we+s[ae]*ue)}let xt=.6-qe*qe-mt*mt-yt*yt-Xe*Xe;if(xt<0)x=0;else{const ae=Pe+de+e[Ve+oe+e[nt+et+e[Je+We]]];xt*=xt,x=xt*xt*(t[ae]*qe+n[ae]*mt+i[ae]*yt+s[ae]*Xe)}let It=.6-gt*gt-ot*ot-at*at-vt*vt;if(It<0)T=0;else{const ae=Pe+1+e[Ve+1+e[nt+1+e[Je+1]]];It*=It,T=It*It*(t[ae]*gt+n[ae]*ot+i[ae]*at+s[ae]*vt)}return 27*(f+p+m+x+T)}}function Th(r){const t=new Uint8Array(512);for(let n=0;n<512/2;n++)t[n]=n;for(let n=0;n<512/2-1;n++){const i=n+~~(r()*(256-n)),s=t[n];t[n]=t[i],t[i]=s}for(let n=256;n<512;n++)t[n]=t[n-256];return t}var Mh=Object.defineProperty,Ch=(r,e,t)=>e in r?Mh(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Te=(r,e,t)=>(Ch(r,typeof e!="symbol"?e+"":e,t),t);(function(){class r{}class e extends r{constructor(d){super(),Te(this,"value"),this.value=d}}class t extends r{constructor(d){super(),Te(this,"value"),this.value=d}}class n extends r{constructor(d){super(),Te(this,"value"),this.value=d}}class i extends r{constructor(d,y="unrestricted"){super(),Te(this,"type"),Te(this,"value"),this.value=d,this.type=y}}class s extends r{constructor(d){super(),Te(this,"value"),this.value=d}}class a extends r{}class o extends r{constructor(d){super(),Te(this,"value"),this.value=d}}class c extends r{}class l extends r{constructor(d){super(),Te(this,"value"),this.value=d}}class u extends r{constructor(d,y="integer"){super(),Te(this,"value"),Te(this,"type"),this.value=d,this.type=y}}class f extends r{constructor(d){super(),Te(this,"value"),this.value=d}}class p extends r{constructor(d,y,S){super(),Te(this,"value"),Te(this,"type"),Te(this,"unit"),this.value=d,this.type=y,this.unit=S}}class m extends r{}class x extends r{}class T extends r{}class g extends r{}class v extends r{}class b extends r{}class _ extends r{}class w extends r{}class C extends r{}class P extends r{}class E extends r{}class I extends r{}class O{constructor(d){Te(this,"input"),Te(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 S=0;S<3&&y<this.input.length;S++){const M=this.input.codePointAt(y);d.push(M),y+=String.fromCodePoint(M).length}return d}}function A(h){return h===10}function N(h){return A(h)||h===8192||h===32}function B(h){return h>=48&&h<=57}function D(h){return B(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)||B(h)||h===45}function W(h){return h>=0&&h<=8||h===11||h>=14&&h<=31||h===127}function Y(h,d){return h===92&&!A(d)}function G(h,d,y){return h===45?L(d)||d===45||Y(d,y):!!L(h)||h===92&&Y(h,d)}function se(h,d,y){return h===43||h===45?B(d)||d===46&&B(y):B(h===46?d:h)}function ce(h){const d=h.consume();if(D(d)){let y=[d];for(;D(...h.peek())&&y.length<5;)y.push(h.consume());N(...h.peek())&&h.consume();const S=parseInt(String.fromCodePoint(...y),16);return S===0||S>1114111?65533:S}return d===void 0?65533:d}function me(h,d){const y=new s("");for(;;){const S=h.consume();if(S===d||S===void 0)return y;if(S===10)return h.reconsume(S),new a;if(S===92){const M=h.peek()[0];M===void 0||(A(M)?h.consume():y.value+=String.fromCodePoint(ce(h)))}else y.value+=String.fromCodePoint(S)}}function le(h){let d="";for(;;){const y=h.consume();if(J(y))d+=String.fromCodePoint(y);else{if(!Y(...h.peek()))return h.reconsume(y),d;d+=String.fromCodePoint(ce(h))}}}function xe(h){let d=(function(y){let S="integer",M="";for([43,45].includes(y.peek()[0])&&(M+=String.fromCodePoint(y.consume()));B(...y.peek());)M+=String.fromCodePoint(y.consume());if(y.peek()[0]===46&&B(y.peek()[1]))for(M+=String.fromCodePoint(y.consume(),y.consume()),S="number";B(...y.peek());)M+=String.fromCodePoint(y.consume());return[69,101].includes(y.peek()[0])&&([45,43].includes(y.peek()[1])&&B(y.peek()[2])?(M+=String.fromCodePoint(y.consume(),y.consume(),y.consume()),S="number"):B(y.peek()[1])&&(M+=String.fromCodePoint(y.consume(),y.consume()),S="number")),{value:parseFloat(M),type:S}})(h);return G(...h.peek())?new p(d.value,d.type,le(h)):h.peek()[0]===37?(h.consume(),new f(d.value)):new u(d.value,d.type)}function Ce(h){for(;;){const d=h.consume();if(d===41||d===void 0)return;Y(...h.peek())&&ce(h)}}function ye(h){const d=le(h);if(d.match(/url/i)&&h.peek()[0]===40){for(h.consume();N(h.peek()[0])&&N(h.peek()[1]);)h.consume();return[34,39].includes(h.peek()[0])||N(h.peek()[0])&&[34,39].includes(h.peek()[1])?new t(d):(function(y){const S=new o("");for(;N(...y.peek());)y.consume();for(;;){const M=y.consume();if(M===41||M===void 0)return S;if(N(M)){for(;N(...y.peek());)y.consume();return y.peek()[0]===41||y.peek()[0]===void 0?(y.consume(),S):(Ce(y),new c)}if([34,39,40].includes(M)||W(M))return Ce(y),new c;if(M===92){if(!Y(...y.peek()))return Ce(y),new c;S.value+=ce(y)}else S.value+=String.fromCodePoint(M)}})(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(N(d)){for(;N(...h.peek());)h.consume();return new m}if(d===34)return me(h,d);if(d===35){if(J(y[0])||Y(...y)){const S=new i;return G(...y)&&(S.type="id"),S.value=le(h),S}return new l(String.fromCodePoint(d))}return d===39?me(h,d):d===40?new C:d===41?new P:d===43?se(...y)?(h.reconsume(d),xe(h)):new l(String.fromCodePoint(d)):d===44?new b:d===45?se(...h.peek())?(h.reconsume(d),xe(h)):h.peek()[0]===45&&h.peek()[1]===62?(h.consume(),h.consume(),new T):G(...h.peek())?(h.reconsume(d),ye(h)):new l(String.fromCodePoint(d)):d===46?se(...h.peek())?(h.reconsume(d),xe(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?G(...y)?new n(le(h)):new l(String.fromCodePoint(d)):d===91?new _:d===92?Y(...y)?(h.reconsume(d),ye(h)):new l(String.fromCodePoint(d)):d===93?new w:d===123?new E:d===125?new I:B(d)?(h.reconsume(d),xe(h)):L(d)?(h.reconsume(d),ye(h)):d===void 0?void 0:new l(String.fromCodePoint(d))}const oe=new Set(["px","deg","s","hz","dppx","number","fr"]);function et(h){return oe.has(h.toLowerCase())}function We(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 “${h}”`);h=y?"x":"y"}return h}function He(h){const d=[];let y=0;function S(){let k=0;const z=y;for(;y<h.length;){const F=h.slice(y,y+1);if(/\s/.test(F)&&k===0)break;if(F==="(")k+=1;else if(F===")"&&(k-=1,k===0)){y++;break}y++}return h.slice(z,y)}function M(){for(;/\s/.test(h.slice(y,y+1));)y++}for(;y<h.length;){const k=h.slice(y,y+1);/\s/.test(k)?M():d.push(S())}return d}function tt(h,d){return h.reduce(((y,S)=>(y.has(S[d])?y.get(S[d]).push(S):y.set(S[d],[S]),y)),new Map)}function Ae(h,d){const y=[],S=[];for(const M of h)d(M)?y.push(M):S.push(M);return[y,S]}function pe(h,d={}){function y(S){return Array.from(S).map((M=>pe(M,d)))}if(h instanceof CSSUnitValue){if(h.unit==="percent"&&d.percentageReference){const M=h.value/100*d.percentageReference.value,k=d.percentageReference.unit;return new CSSUnitValue(M,k)}const S=h.toSum();if(S&&S.values.length===1&&(h=S.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(pe(h.value,d));break;case"clamp":h=new CSSMathClamp(pe(h.lower,d),pe(h.value,d),pe(h.upper,d));break;case"invert":h=new CSSMathInvert(pe(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 S=Array.from(h.values);if(S.every((M=>M instanceof CSSUnitValue&&M.unit!=="percent"&&et(M.unit)&&M.unit===S[0].unit))){const M=Math[h.operator].apply(Math,S.map((({value:k})=>k)));return new CSSUnitValue(M,S[0].unit)}}if(h instanceof CSSMathMin||h instanceof CSSMathMax){const S=Array.from(h.values),[M,k]=Ae(S,(F=>F instanceof CSSUnitValue&&F.unit!=="percent")),z=Array.from(tt(M,"unit").values());if(z.some((F=>F.length>0))){const F=z.map((U=>{const V=Math[h.operator].apply(Math,U.map((({value:H})=>H)));return new CSSUnitValue(V,U[0].unit)}));h=h instanceof CSSMathMin?new CSSMathMin(...F,...k):new CSSMathMax(...F,...k)}return S.length===1?S[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 S=function(k){const z=k.filter((F=>F instanceof CSSUnitValue));return[...k.filter((F=>!(F instanceof CSSUnitValue))),...Array.from(tt(z,"unit").entries()).map((([F,U])=>{const V=U.reduce(((H,{value:X})=>H+X),0);return new CSSUnitValue(V,F)}))]},M=[];for(const k of h.values)k instanceof CSSMathSum?M.push(...k.values):M.push(k);return M=S(M),M.length===1?M[0]:new CSSMathSum(...M)}if(h instanceof CSSMathProduct){let S=[];for(const z of h.values)z instanceof CSSMathProduct?S.push(...z.values):S.push(z);const[M,k]=Ae(S,(z=>z instanceof CSSUnitValue&&z.unit==="number"));if(M.length>1){const z=M.reduce(((F,{value:U})=>F*U),1);S=[new CSSUnitValue(z,"number"),...k]}if(S.length===2){let z,F;for(const U of S)U instanceof CSSUnitValue&&U.unit==="number"?z=U:U instanceof CSSMathSum&&[...U.values].every((V=>V instanceof CSSUnitValue))&&(F=U);if(z&&F)return new CSSMathSum(...[...F.values].map((U=>new CSSUnitValue(U.value*z.value,U.unit))))}if(S.every((z=>z instanceof CSSUnitValue&&et(z.unit)||z instanceof CSSMathInvert&&z.value instanceof CSSUnitValue&&et(z.value.unit)))){const z=new CSSMathProduct(...S).toSum();if(z&&z.values.length===1)return z.values[0]}return new CSSMathProduct(...S)}return h}const ie=null,st=["percent","length","angle","time","frequency","resolution","flex"],we={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}}},ue=new Map;for(const h of Object.values(we))if(h.compatible)for(const d of h.units)ue.set(d,h);function qe(h){return ue.get(h)}function mt(h,d){const y={...h};for(const S of Object.keys(d))y[S]?y[S]+=d[S]:y[S]=d[S];return y}function yt(h){return h==="number"?{}:h==="percent"?{percent:1}:we.absoluteLengths.units.has(h)||we.fontRelativeLengths.units.has(h)||we.viewportRelativeLengths.units.has(h)?{length:1}:we.angle.units.has(h)?{angle:1}:we.time.units.has(h)?{time:1}:we.frequency.units.has(h)?{frequency:1}:we.resolution.units.has(h)?{resolution:1}:h==="fr"?{flex:1}:ie}function Xe(h){if(h instanceof CSSUnitValue){let{unit:d,value:y}=h;const S=qe(h.unit);return S&&d!==S.canonicalUnit&&(y*=S.ratios[d],d=S.canonicalUnit),d==="number"?[[y,{}]]:[[y,{[d]:1}]]}if(h instanceof CSSMathInvert){if(!(h.value instanceof CSSUnitValue))throw new Error("Not implemented");const d=Xe(h.value);if(d===ie||d.length>1)return ie;const y=d[0],S={};for(const[M,k]of Object.entries(y[1]))S[M]=-1*k;return d[0]=[1/y[0],S],d}if(h instanceof CSSMathProduct){let d=[[1,{}]];for(const y of h.values){const S=Xe(y),M=[];if(S===ie)return ie;for(const k of d)for(const z of S)M.push([k[0]*z[0],mt(k[1],z[1])]);d=M}return d}throw new Error("Not implemented")}function gt(h,d){if(yt(d)===ie)throw new SyntaxError("The string did not match the expected pattern.");const y=Xe(h);if(!y)throw new TypeError;if(y.length>1)throw new TypeError("Sum has more than one item");const S=(function(M,k){const z=M.unit,F=M.value,U=qe(z),V=qe(k);return!V||U!==V?ie:new CSSUnitValue(F*V.ratios[z]/V.ratios[k],k)})(ot(y[0]),d);if(S===ie)throw new TypeError;return S}function ot(h){const[d,y]=h,S=Object.entries(y);if(S.length>1)return ie;if(S.length===0)return new CSSUnitValue(d,"number");const M=S[0];return M[1]!==1?ie:new CSSUnitValue(d,M[0])}function at(h,...d){if(d&&d.length)throw new Error("Not implemented");const y=Xe(h).map((S=>ot(S)));if(y.some((S=>S===ie)))throw new TypeError("Type error");return new CSSMathSum(...y)}function vt(h,d){if(h.percentHint&&d.percentHint&&h.percentHint!==d.percentHint)return ie;const y={...h,percentHint:h.percentHint??d.percentHint};for(const S of st)d[S]&&(y[S]??(y[S]=0),y[S]+=d[S]);return y}class Pe{constructor(d,y){Te(this,"name"),Te(this,"values"),this.name=d,this.values=y}}class Ve{constructor(d,y){Te(this,"value"),Te(this,"associatedToken"),this.value=d,this.associatedToken=y}}function nt(h){if(Array.isArray(h))return h;if(typeof h=="string")return(function(d){const y=new O(d),S=[];for(;;){const M=de(y);if(M===void 0)return S;S.push(M)}})(h);throw new TypeError("Invalid input type "+typeof h)}function Je(h){const d=h.shift();return d instanceof E||d instanceof _||d instanceof C?(function(y,S){let M;if(S instanceof E)M=I;else if(S instanceof C)M=P;else{if(!(S instanceof _))return;M=w}const k=new Ve([],S);for(;;){const z=y.shift();if(z instanceof M||z===void 0)return k;y.unshift(z),k.value.push(Je(y))}})(h,d):d instanceof t?(function(y,S){const M=new Pe(y.value,[]);for(;;){const k=S.shift();if(k instanceof P||k===void 0)return M;S.unshift(k),M.values.push(Je(S))}})(d,h):d}function Q(h){if(h instanceof C||h instanceof P)return 6;if(h instanceof l)switch(h.value){case"*":case"/":return 4;case"+":case"-":return 2}}function St(h){return h[h.length-1]}function zt(h,d,y){const S=["+","-"].includes(h.value)?"ADDITION":"MULTIPLICATION",M=d.type===S?d.values:[d],k=y.type===S?y.values:[y];return h.value==="-"?k[0]={type:"NEGATE",value:k[0]}:h.value==="/"&&(k[0]={type:"INVERT",value:k[0]}),{type:S,values:[...M,...k]}}function xt(h){if(h.type==="ADDITION")return new CSSMathSum(...h.values.map((d=>xt(d))));if(h.type==="MULTIPLICATION")return new CSSMathProduct(...h.values.map((d=>xt(d))));if(h.type==="NEGATE")return new CSSMathNegate(xt(h.value));if(h.type==="INVERT")return new CSSMathInvert(xt(h.value));if(h instanceof Ve)return It(new Pe("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 ae(h)}function It(h){if(h.name==="min"||h.name==="max"){const S=h.values.filter((M=>!(M instanceof m||M instanceof b))).map((M=>pe(It(new Pe("calc",M)))));return h.name==="min"?new CSSMathMin(...S):new CSSMathMax(...S)}if(h.name!=="calc")return null;const d=xt((function(S){const M=[],k=[];for(;S.length;){const z=S.shift();if(z instanceof u||z instanceof p||z instanceof f||z instanceof Pe||z instanceof Ve||z instanceof e)k.push(z);else if(z instanceof l&&["*","/","+","-"].includes(z.value)){for(;M.length&&!(St(M)instanceof C)&&Q(St(M))>Q(z);){const F=M.pop(),U=k.pop(),V=k.pop();k.push(zt(F,V,U))}M.push(z)}else if(z instanceof C)M.push(z);else if(z instanceof P){if(!M.length)return null;for(;!(St(M)instanceof C);){const F=M.pop(),U=k.pop(),V=k.pop();k.push(zt(F,V,U))}if(!(St(M)instanceof C))return null;M.pop()}else if(!(z instanceof m))return null}for(;M.length;){if(St(M)instanceof C)return null;const z=M.pop(),F=k.pop(),U=k.pop();k.push(zt(z,U,F))}return k[0]})([...h.values]));let y;try{y=pe(d)}catch{new CSSStyleSheet().insertRule("error",0)}return y instanceof CSSUnitValue?new CSSMathSum(y):y}function ae(h){return h instanceof Pe&&["calc","min","max","clamp"].includes(h.name)?It(h):h instanceof u&&h.value===0&&!h.unit?new CSSUnitValue(0,"px"):h instanceof u?new CSSUnitValue(h.value,"number"):h instanceof f?new CSSUnitValue(h.value,"percent"):h instanceof p?new CSSUnitValue(h.value,h.unit):void 0}function Hc(h){const d=(function(y){const S=nt(y);for(;S[0]instanceof m;)S.shift();if(S[0]===void 0)return null;const M=Je(S);for(;S[0]instanceof m;)S.shift();return S[0]===void 0?M:null})(h);return d===null&&new CSSStyleSheet().insertRule("error",0),d instanceof u||d instanceof f||d instanceof p||d instanceof Pe||new CSSStyleSheet().insertRule("error",0),d instanceof p&&yt(d.unit)===null&&new CSSStyleSheet().insertRule("error",0),ae(d)}(function(){let h=new WeakMap;function d(k){const z=[];for(let U=0;U<k.length;U++)z[U]=typeof(F=k[U])=="number"?new CSSUnitValue(F,"number"):F;var F;return z}class y{static parse(z){return z instanceof y?z:pe(Hc(z),{})}}class S extends y{constructor(z,F,U,V){super(),h.set(this,{values:d(z),operator:F,name:U||F,delimiter:V||", "})}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 M={CSSNumericValue:y,CSSMathValue:S,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 gt(this,k)}toSum(...k){return at(this,...k)}type(){return yt(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 S{constructor(k){super(arguments,"sum","calc"," + ")}},CSSMathProduct:class extends S{constructor(k){super(arguments,"product","calc"," * ")}toSum(...k){return at(this,...k)}type(){return h.get(this).values.map((k=>k.type())).reduce(vt)}},CSSMathNegate:class extends S{constructor(k){super([arguments[0]],"negate","-")}get value(){return h.get(this).values[0]}type(){return this.value.type()}},CSSMathInvert:class extends S{constructor(k){super([1,arguments[0]],"invert","calc"," / ")}get value(){return h.get(this).values[1]}type(){return(function(k){const z={};for(const F of st)z[F]=-1*k[F];return z})(h.get(this).values[1].type())}},CSSMathMax:class extends S{constructor(){super(arguments,"max")}},CSSMathMin:class extends S{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(M))if(!(k in window)&&!Reflect.defineProperty(window,k,{value:z}))throw Error(`Error installing CSSOM support for ${k}`)})();const po="block";let Ue=new WeakMap,Bt=new WeakMap;const Ji=["entry","exit","cover","contain","entry-crossing","exit-crossing"];function mo(h){return h===document.scrollingElement?document:h}function en(h){jr(h);let d=Ue.get(h).animations;if(d.length===0)return;let y=h.currentTime;for(let S=0;S<d.length;S++)d[S].tickAnimation(y)}function yo(h,d){if(!h)return null;const y=Bt.get(h).sourceMeasurements,S=getComputedStyle(h);let M=y.scrollTop;return We(d,S)==="x"&&(M=Math.abs(y.scrollLeft)),M}function Jr(h,d){const y=pe(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 jr(h){if(!(h instanceof vn))return void(function(y){const S=Ue.get(y);if(!S.anonymousSource)return;const M=vo(S.anonymousSource,S.anonymousTarget);gn(y,M)})(h);const d=h.subject;if(!d||getComputedStyle(d).display=="none")return void gn(h,null);gn(h,Xr(d))}function go(h){return["block","inline","x","y"].includes(h)}function Gr(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 $r(h,d){if(!h||!d)return;let y=0,S=0,M=d;const k=h.offsetParent;for(;M&&M!=k;)S+=M.offsetLeft,y+=M.offsetTop,M=M.offsetParent;S-=h.offsetLeft+h.clientLeft,y-=h.offsetTop+h.clientTop;const z=getComputedStyle(d);return{top:y,left:S,offsetWidth:d.offsetWidth,offsetHeight:d.offsetHeight,fontSize:z.fontSize}}function ji(h){let d=Bt.get(h);d.sourceMeasurements=Gr(h);for(const y of d.timelineRefs){const S=y.deref();S instanceof vn&&(Ue.get(S).subjectMeasurements=$r(h,S.subject))}d.updateScheduled||(setTimeout((()=>{for(const y of d.timelineRefs){const S=y.deref();S&&en(S)}d.updateScheduled=!1})),d.updateScheduled=!0)}function gn(h,d){const y=Ue.get(h),S=y.source;if(S!=d){if(S){const M=Bt.get(S);if(M){M.timelineRefs.delete(h);const k=Array.from(M.timelineRefs).filter((z=>z.deref()===void 0));for(const z of k)M.timelineRefs.delete(z);M.timelineRefs.size===0&&(M.disconnect(),Bt.delete(S))}}if(y.source=d,d){let M=Bt.get(d);if(!M){M={timelineRefs:new Set,sourceMeasurements:Gr(d)},Bt.set(d,M);const k=new ResizeObserver((U=>{for(const V of U)ji(y.source)}));k.observe(d);for(const U of d.children)k.observe(U);const z=new MutationObserver((U=>{for(const V of U)ji(V.target)}));z.observe(d,{attributes:!0,attributeFilter:["style","class"]});const F=()=>{M.sourceMeasurements.scrollLeft=d.scrollLeft,M.sourceMeasurements.scrollTop=d.scrollTop;for(const U of M.timelineRefs){const V=U.deref();V&&en(V)}};mo(d).addEventListener("scroll",F),M.disconnect=()=>{k.disconnect(),z.disconnect(),mo(d).removeEventListener("scroll",F)}}M.timelineRefs.add(new WeakRef(h))}}}function Wr(h,d){let y=Ue.get(h).animations;for(let S=0;S<y.length;S++)y[S].animation==d&&y.splice(S,1)}function Hr(h,d,y){let S=Ue.get(h).animations;for(let M=0;M<S.length;M++)if(S[M].animation==d)return;S.push({animation:d,tickAnimation:y}),queueMicrotask((()=>{en(h)}))}class je{constructor(d){if(Ue.set(this,{source:null,axis:po,anonymousSource:d?d.anonymousSource:null,anonymousTarget:d?d.anonymousTarget:null,subject:null,inset:null,animations:[],subjectMeasurements:null}),gn(this,d&&d.source!==void 0?d.source:document.scrollingElement),d&&d.axis!==void 0&&d.axis!=po){if(!go(d.axis))throw TypeError("Invalid axis");Ue.get(this).axis=d.axis}en(this)}set source(d){gn(this,d),en(this)}get source(){return Ue.get(this).source}set axis(d){if(!go(d))throw TypeError("Invalid axis");Ue.get(this).axis=d,en(this)}get axis(){return Ue.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 y=this.source;if(!y||!y.isConnected||this.phase=="inactive")return null;const S=getComputedStyle(y);if(S.display==="inline"||S.display==="none")return null;const M=this.axis,k=yo(y,M),z=(function(F,U){const V=Bt.get(F).sourceMeasurements,H=getComputedStyle(F).writingMode=="horizontal-tb";return U==="block"?U=H?"y":"x":U==="inline"&&(U=H?"x":"y"),U==="y"?V.scrollHeight-V.clientHeight:U==="x"?V.scrollWidth-V.clientWidth:void 0})(y,M);return z>0?CSS.percent(100*k/z):CSS.percent(100)}get __polyfill(){return!0}}function qr(h,d){let y=h.parentElement;for(;y!=null;){if(d(y))return y;y=y.parentElement}}function vo(h,d){switch(h){case"root":return document.scrollingElement;case"nearest":return Xr(d);case"self":return d;default:throw new TypeError("Invalid ScrollTimeline Source Type.")}}function qc(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 So(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 Xc(h){return getComputedStyle(h).position!="static"||So(h)}function Yc(h){switch(getComputedStyle(h).position){case"static":case"relative":case"sticky":return qr(h,qc);case"absolute":return qr(h,Xc);case"fixed":return qr(h,So)}}function Xr(h){if(h&&h.isConnected){for(;h=Yc(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 Dn(h,d){const y=Ue.get(h),S=y.subjectMeasurements,M=Bt.get(y.source).sourceMeasurements;return h.phase==="inactive"?null:h instanceof vn?Yr(d,M,S,y.axis,y.inset):null}function Yr(h,d,y,S,M){const k=d.direction=="rtl"||d.writingMode=="vertical-rl";let z,F,U={fontSize:y.fontSize};We(S,d)==="x"?(z=y.offsetWidth,F=y.left,U.scrollPadding=[d.scrollPaddingLeft,d.scrollPaddingRight],k&&(F+=d.scrollWidth-d.clientWidth,U.scrollPadding=[d.scrollPaddingRight,d.scrollPaddingLeft]),U.containerSize=d.clientWidth):(z=y.offsetHeight,F=y.top,U.scrollPadding=[d.scrollPaddingTop,d.scrollPaddingBottom],U.containerSize=d.clientHeight);const V=(function(es,qi){const cl={start:0,end:0};if(!es)return cl;const[ll,ul]=[es.start,es.end].map(((Io,Bo)=>Io==="auto"?qi.scrollPadding[Bo]==="auto"?0:parseFloat(qi.scrollPadding[Bo]):Jr(Io,{percentageReference:CSS.px(qi.containerSize),fontSize:CSS.px(parseFloat(qi.fontSize))})));return{start:ll,end:ul}})(M,U),H=F-U.containerSize+V.end,X=F+z-V.start,Z=H+z,he=X-z,_e=Math.min(Z,he),Ye=Math.max(Z,he);let _t,ct;const zo=z>U.containerSize-V.start-V.end;switch(h){case"cover":_t=H,ct=X;break;case"contain":_t=_e,ct=Ye;break;case"entry":_t=H,ct=_e;break;case"exit":_t=Ye,ct=X;break;case"entry-crossing":_t=H,ct=zo?Ye:_e;break;case"exit-crossing":_t=zo?_e:Ye,ct=X}return{start:_t,end:ct}}function xo(h,d){if(h instanceof vn){const{rangeName:y,offset:S}=d;return _o(Dn(h,y),S,Dn(h,"cover"),h.subject)}if(h instanceof je){const{axis:y,source:S}=h,{sourceMeasurements:M}=Bt.get(S);let k;return k=We(y,M)==="x"?M.scrollWidth-M.clientWidth:M.scrollHeight-M.clientHeight,Jr(d,{percentageReference:CSS.px(k)})/k}unsupportedTimeline(h)}function _o(h,d,y,S){if(!h||!y)return 0;let M=getComputedStyle(S);return(Jr(d,{percentageReference:CSS.px(h.end-h.start),fontSize:CSS.px(parseFloat(M.fontSize))})+h.start-y.start)/(y.end-y.start)}let vn=class extends je{constructor(d){super(d);const y=Ue.get(this);y.subject=d&&d.subject?d.subject:void 0,d&&d.inset&&(y.inset=(function(S){if(!S)return{start:0,end:0};let M;if(M=typeof S=="string"?He(S).map((k=>{if(k==="auto")return"auto";try{return CSSNumericValue.parse(k)}catch{throw TypeError(`Could not parse inset "${S}"`)}})):Array.isArray(S)?S:[S],M.length===0||M.length>2)throw TypeError("Invalid inset");for(const k of M){if(k==="auto")continue;const z=k.type();if(z.length!==1&&z.percent!==1)throw TypeError("Invalid inset")}return{start:M[0],end:M[1]??M[0]}})(d.inset)),y.subject&&(new ResizeObserver((()=>{ji(y.source)})).observe(y.subject),new MutationObserver((()=>{ji(y.source)})).observe(y.subject,{attributes:!0,attributeFilter:["class","style"]})),jr(this),y.subjectMeasurements=$r(y.source,y.subject),en(this)}get source(){return jr(this),Ue.get(this).source}set source(d){throw new Error("Cannot set the source of a view timeline")}get subject(){return Ue.get(this).subject}get axis(){return Ue.get(this).axis}get currentTime(){const y=yo(this.source,this.axis);if(y==null)return null;const S=Dn(this,"cover");if(!S)return null;const M=(y-S.start)/(S.end-S.start);return CSS.percent(100*M)}get startOffset(){return CSS.px(Dn(this,"cover").start)}get endOffset(){return CSS.px(Dn(this,"cover").end)}};const Zc=document.getAnimations,Kc=window.Element.prototype.getAnimations,Qc=window.Element.prototype.animate,bo=window.Animation;class Sn{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 Fn(h){h.readyPromise=new Sn,requestAnimationFrame((()=>{var d;(((d=h.timeline)==null?void 0:d.currentTime)??null)!==null&&(Gi(h),h.pendingTask!=="play"||h.startTime===null&&h.holdTime===null?h.pendingTask==="pause"&&Co(h):Mo(h))}))}function To(){return new DOMException("The user aborted a request","AbortError")}function tn(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,S=Ut(h),M=S?y*d/S:0;return CSS.percent(M)}function ge(h,d){if(h.timeline){if(d===null)return d;if(d.unit==="percent"){const y=h.rangeDuration??100,S=Ut(h);return d.value*S/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 Mo(h){const d=ge(h,h.timeline.currentTime);if(h.holdTime!=null)wt(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;wt(h);const S=h.animation.playbackRate;S==0?(h.holdTime=null,h.startTime=d):h.startTime=d-y/S}h.readyPromise&&h.readyPromise.state=="pending"&&h.readyPromise.resolve(h.proxy),Nt(h,!1,!1),Dt(h),h.pendingTask=null}function Co(h){const d=ge(h,h.timeline.currentTime);h.startTime!=null&&h.holdTime==null&&(h.holdTime=(d-h.startTime)*h.animation.playbackRate),wt(h),h.startTime=null,h.readyPromise.resolve(h.proxy),Nt(h,!1,!1),Dt(h),h.pendingTask=null}function wo(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 xn(h){return h.pendingPlaybackRate!==null?h.pendingPlaybackRate:h.animation.playbackRate}function wt(h){h.pendingPlaybackRate!==null&&(h.animation.playbackRate=h.pendingPlaybackRate,h.pendingPlaybackRate=null)}function Po(h){if(!h.timeline)return null;const d=ge(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 Nt(h,d,y){if(!h.timeline)return;let S=d?ge(h,h.proxy.currentTime):Po(h);if(S&&h.startTime!=null&&!h.proxy.pending){const M=xn(h),k=Ut(h);let z=h.previousCurrentTime;M>0&&S>=k&&h.previousCurrentTime!=null?((z===null||z<k)&&(z=k),h.holdTime=d?S:z):M<0&&S<=0?((z==null||z>0)&&(z=0),h.holdTime=d?S:z):M!=0&&(d&&h.holdTime!==null&&(h.startTime=(function(F,U){if(!F.timeline)return null;const V=ge(F,F.timeline.currentTime);return V==null?null:V-U/F.animation.playbackRate})(h,h.holdTime)),h.holdTime=null)}Dt(h),h.previousCurrentTime=ge(h,h.proxy.currentTime),h.proxy.playState=="finished"?(h.finishedPromise||(h.finishedPromise=new Sn),h.finishedPromise.state=="pending"&&(y?wo(h):Promise.resolve().then((()=>{wo(h)})))):(h.finishedPromise&&h.finishedPromise.state=="resolved"&&(h.finishedPromise=new Sn),h.animation.playState!="paused"&&h.animation.pause())}function Ut(h){const d=(function(S){const M=S.proxy.effect.getTiming();return S.normalizedTiming||M})(h),y=d.delay+d.endDelay+d.iterations*d.duration;return Math.max(0,y)}function Dt(h){if(h.timeline)if(h.startTime!==null){const d=h.timeline.currentTime;if(d==null)return;Zr(h,(ge(h,d)-h.startTime)*h.animation.playbackRate)}else h.holdTime!==null&&Zr(h,h.holdTime)}function Zr(h,d){const y=h.timeline,S=h.animation.playbackRate,M=y.currentTime&&y.currentTime.value==(S<0?0:100)?S<0?.001:-.001:0;h.animation.currentTime=d+M}function Kr(h,d){if(!h.timeline)return;const y=h.proxy.playState=="paused"&&h.proxy.pending;let S=!1,M=ge(h,h.proxy.currentTime);xn(h)==0&&M==null&&(h.holdTime=0),M==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,S=!0),(h.holdTime!==null||h.autoAlignStartTime||y||h.pendingPlaybackRate!==null)&&(h.readyPromise&&!S&&(h.readyPromise=null),Dt(h),h.readyPromise||Fn(h),h.pendingTask="play",Hr(h.timeline,h.animation,Qr.bind(h.proxy)),Nt(h,!1,!1))}function Qr(h){const d=q.get(this);if(!d)return;if(h==null)return void(d.proxy.playState!=="paused"&&d.animation.playState!="idle"&&d.animation.cancel());Gi(d),d.pendingTask&&requestAnimationFrame((()=>{d.pendingTask!=="play"||d.startTime===null&&d.holdTime===null?d.pendingTask==="pause"&&Co(d):Mo(d)}));const y=this.playState;if(y=="running"||y=="finished"){const S=ge(d,h);Zr(d,(S-ge(d,this.startTime))*this.playbackRate),Nt(d,!1,!1)}}function Eo(h){h.specifiedTiming=null}let q=new WeakMap;window.addEventListener("pagehide",(h=>{q=new WeakMap}),!1);let ko=new WeakMap;function Gi(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,S;try{y=CSS.percent(100*(function(k){if(!k.animationRange)return 0;const z=k.animationRange.start==="normal"?Ro(k.timeline):k.animationRange.start;return xo(k.timeline,z)})(h))}catch(k){y=CSS.percent(0),h.animationRange.start="normal",console.warn("Exception when calculating start offset",k)}try{S=CSS.percent(100*(1-(function(k){if(!k.animationRange)return 0;const z=k.animationRange.end==="normal"?Ao(k.timeline):k.animationRange.end;return 1-xo(k.timeline,z)})(h)))}catch(k){S=CSS.percent(100),h.animationRange.end="normal",console.warn("Exception when calculating end offset",k)}h.rangeDuration=S.value-y.value;const M=xn(h);h.startTime=ge(h,M>=0?y:S),h.holdTime=null,h.rangeDuration!==d&&Eo(h)}function $i(h){throw new Error("Unsupported timeline class")}function Ro(h){return h instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(0)}:h instanceof je?CSS.percent(0):void $i()}function Ao(h){return h instanceof ViewTimeline?{rangeName:"cover",offset:CSS.percent(100)}:h instanceof je?CSS.percent(100):void $i()}function el(h,d){if(!d)return{start:"normal",end:"normal"};const y={start:Ro(h),end:Ao(h)};if(h instanceof ViewTimeline){const S=He(d),M=[],k=[];if(S.forEach((z=>{if(Ji.includes(z))M.push(z);else try{k.push(CSSNumericValue.parse(z))}catch{throw TypeError(`Could not parse range "${d}"`)}})),M.length>2||k.length>2||k.length==1)throw TypeError("Invalid time range or unsupported time range format.");return M.length&&(y.start.rangeName=M[0],y.end.rangeName=M.length>1?M[1]:M[0]),k.length>1&&(y.start.offset=k[0],y.end.offset=k[1]),y}if(h instanceof je){const S=d.split(" ");if(S.length!=2)throw TypeError("Invalid time range or unsupported time range format.");return y.start=CSSNumericValue.parse(S[0]),y.end=CSSNumericValue.parse(S[1]),y}$i()}function Wi(h,d,y){if(!d||d==="normal")return"normal";if(h instanceof ViewTimeline){let S="cover",M=y==="start"?CSS.percent(0):CSS.percent(100);if(d instanceof Object)d.rangeName!==void 0&&(S=d.rangeName),d.offset!==void 0&&(M=d.offset);else{const k=He(d);k.length===1?Ji.includes(k[0])?S=k[0]:M=pe(CSSNumericValue.parse(k[0]),{}):k.length===2&&(S=k[0],M=pe(CSSNumericValue.parse(k[1]),{}))}if(!Ji.includes(S))throw TypeError("Invalid range name");return{rangeName:S,offset:M}}if(h instanceof je)return CSSNumericValue.parse(d);$i()}class Hi{constructor(d,y,S={}){const M=y instanceof je,k=d instanceof bo?d:new bo(d,M?void 0:y);ko.set(k,this),q.set(this,{animation:k,timeline:M?y:void 0,playState:M?"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:M?el(y,S["animation-range"]):null,proxy:this})}get effect(){const d=q.get(this);return d.timeline?(d.effect||(d.effect=(function(y){const S=y.animation.effect,M=S.updateTiming,k={apply:function(V){S.getTiming();const H=V.apply(S);if(y.timeline){const X=y.duration??100;H.localTime=tn(y,H.localTime),H.endTime=tn(y,H.endTime),H.activeDuration=tn(y,H.activeDuration);const Z=Ut(y),he=H.iterations?(Z-H.delay-H.endDelay)/H.iterations:0;H.duration=Z?CSS.percent(X*he/Z):CSS.percent(0),y.timeline.currentTime===void 0&&(H.localTime=null)}return H}},z={apply:function(V,H){if(y.specifiedTiming)return y.specifiedTiming;y.specifiedTiming=V.apply(S);let X,Z=Object.assign({},y.specifiedTiming);if(Z.duration===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");return(Z.duration===null||Z.duration==="auto"||y.autoDurationEffect)&&y.timeline&&(y.autoDurationEffect=!0,Z.delay=0,Z.endDelay=0,X=Z.iterations?1e5:0,Z.duration=Z.iterations?(X-Z.delay-Z.endDelay)/Z.iterations:0,Z.duration<0&&(Z.duration=0,Z.endDelay=X-Z.delay),M.apply(S,[Z])),y.normalizedTiming=Z,y.specifiedTiming}},F={apply:function(V,H,X){if(X&&X.length){if(y.timeline&&X[0]){const Z=X[0],he=Z.duration;if(he===1/0)throw TypeError("Effect duration cannot be Infinity when used with Scroll Timelines");if(Z.iterations===1/0)throw TypeError("Effect iterations cannot be Infinity when used with Scroll Timelines");he!==void 0&&he!=="auto"&&(y.autoDurationEffect=null)}y.specifiedTiming&&V.apply(S,[y.specifiedTiming]),V.apply(S,X),Eo(y)}}},U=new Proxy(S,{get:function(V,H){const X=V[H];return typeof X=="function"?X.bind(S):X},set:function(V,H,X){return V[H]=X,!0}});return U.getComputedTiming=new Proxy(S.getComputedTiming,k),U.getTiming=new Proxy(S.getTiming,z),U.updateTiming=new Proxy(S.updateTiming,F),U})(d)),d.effect):d.animation.effect}set effect(d){const y=q.get(this);y.animation.effect=d,y.effect=null,y.autoDurationEffect=null}get timeline(){const d=q.get(this);return d.timeline||d.animation.timeline}set timeline(d){const y=q.get(this),S=this.timeline;if(S==d)return;const M=this.playState,k=this.currentTime;let z,F=Ut(y);z=k===null?null:F===0?0:ge(y,k)/F;const U=S instanceof je,V=d instanceof je,H=this.pending;if(U&&Wr(y.timeline,y.animation),V)return y.timeline=d,wt(y),y.autoAlignStartTime=!0,y.startTime=null,y.holdTime=null,M!=="running"&&M!=="finished"||(y.readyPromise&&y.readyPromise.state!=="resolved"||Fn(y),y.pendingTask="play",Hr(y.timeline,y.animation,Qr.bind(this))),M==="paused"&&z!==null&&(y.holdTime=z*F),H&&(y.readyPromise&&y.readyPromise.state!="resolved"||Fn(y),y.pendingTask=M=="paused"?"pause":"play"),y.startTime!==null&&(y.holdTime=null),void Nt(y,!1,!1);if(y.animation.timeline!=d)throw TypeError("Unsupported timeline: "+d);if(Wr(y.timeline,y.animation),y.timeline=null,U)switch(k!==null&&(y.animation.currentTime=z*Ut(y)),M){case"paused":y.animation.pause();break;case"running":case"finished":y.animation.play()}}get startTime(){const d=q.get(this);return d.timeline?tn(d,d.startTime):d.animation.startTime}set startTime(d){const y=q.get(this);if(d=ge(y,d),!y.timeline)return void(y.animation.startTime=d);y.autoAlignStartTime=!1,ge(y,y.timeline.currentTime)==null&&y.startTime!=null&&(y.holdTime=null,Dt(y));const S=ge(y,this.currentTime);wt(y),y.startTime=d,y.startTime!==null&&y.animation.playbackRate!=0?y.holdTime=null:y.holdTime=S,y.pendingTask&&(y.pendingTask=null,y.readyPromise.resolve(this)),Nt(y,!0,!1),Dt(y)}get currentTime(){const d=q.get(this);return d.timeline?d.holdTime!=null?tn(d,d.holdTime):tn(d,Po(d)):d.animation.currentTime}set currentTime(d){const y=q.get(this);y.timeline?((function(S,M){if(M==null&&S.currentTime!==null)throw new TypeError;M=ge(S,M),S.autoAlignStartTime=!1,S.holdTime!==null||S.startTime===null||S.timeline.phase==="inactive"||S.animation.playbackRate===0?S.holdTime=M:S.startTime=ge(S,S.timeline.currentTime)-M/S.animation.playbackRate,S.timeline.phase==="inactive"&&(S.startTime=null),S.previousCurrentTime=null})(y,d),y.pendingTask=="pause"&&(y.holdTime=ge(y,d),wt(y),y.startTime=null,y.pendingTask=null,y.readyPromise.resolve(this)),Nt(y,!0,!1)):y.animation.currentTime=d}get playbackRate(){return q.get(this).animation.playbackRate}set playbackRate(d){const y=q.get(this);if(!y.timeline)return void(y.animation.playbackRate=d);y.pendingPlaybackRate=null;const S=this.currentTime;y.animation.playbackRate=d,S!==null&&(this.currentTime=S)}get playState(){const d=q.get(this);if(!d.timeline)return d.animation.playState;const y=ge(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>=Ut(d)||d.animation.playbackRate<0&&y<=0)?"finished":"running"}get rangeStart(){var d;return((d=q.get(this).animationRange)==null?void 0:d.start)??"normal"}set rangeStart(d){const y=q.get(this);if(!y.timeline)return y.animation.rangeStart=d;y.timeline instanceof je&&(y.animationRange.start=Wi(y.timeline,d,"start"),Gi(y),Dt(y))}get rangeEnd(){var d;return((d=q.get(this).animationRange)==null?void 0:d.end)??"normal"}set rangeEnd(d){const y=q.get(this);if(!y.timeline)return y.animation.rangeEnd=d;y.timeline instanceof je&&(y.animationRange.end=Wi(y.timeline,d,"end"),Gi(y),Dt(y))}get replaceState(){return q.get(this).animation.pending}get pending(){const d=q.get(this);return d.timeline?!!d.readyPromise&&d.readyPromise.state=="pending":d.animation.pending}finish(){const d=q.get(this);if(!d.timeline)return void d.animation.finish();const y=xn(d),S=Ut(d);if(y==0)throw new DOMException("Cannot finish Animation with a playbackRate of 0.","InvalidStateError");if(y>0&&S==1/0)throw new DOMException("Cannot finish Animation with an infinite target effect end.","InvalidStateError");wt(d);const M=y<0?0:S;this.currentTime=tn(d,M);const k=ge(d,d.timeline.currentTime);d.startTime===null&&k!==null&&(d.startTime=k-M/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)),Nt(d,!0,!0)}play(){const d=q.get(this);d.timeline?Kr(d):d.animation.play()}pause(){const d=q.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||Fn(d),d.pendingTask="pause",Hr(d.timeline,d.animation,Qr.bind(d.proxy))):d.animation.pause()}reverse(){const d=q.get(this),y=xn(d),S=ge(d,this.currentTime),M=Ut(d)==1/0,k=y!=0&&(y<0||S>0||!M);if(!d.timeline||!k)return k&&(d.pendingPlaybackRate=-xn(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),Kr(d)}updatePlaybackRate(d){const y=q.get(this);if(y.pendingPlaybackRate=d,!y.timeline)return void y.animation.updatePlaybackRate(d);const S=this.playState;if(!y.readyPromise||y.readyPromise.state!="pending")switch(S){case"idle":case"paused":wt(y);break;case"finished":const M=ge(y,y.timeline.currentTime),k=M!==null?(M-y.startTime)*y.animation.playbackRate:null;y.startTime=d==0?M:M!=null&&k!=null?(M-k)/d:null,wt(y),Nt(y,!1,!1),Dt(y);break;default:Kr(y)}}persist(){q.get(this).animation.persist()}get id(){return q.get(this).animation.id}set id(d){q.get(this).animation.id=d}cancel(){const d=q.get(this);d.timeline?(this.playState!="idle"&&((function(y){y.pendingTask&&(y.pendingTask=null,wt(y),y.readyPromise.reject(To()),Fn(y),y.readyPromise.resolve(y.proxy))})(d),d.finishedPromise&&d.finishedPromise.state=="pending"&&d.finishedPromise.reject(To()),d.finishedPromise=new Sn,d.animation.cancel()),d.startTime=null,d.holdTime=null,Wr(d.timeline,d.animation)):d.animation.cancel()}get onfinish(){return q.get(this).animation.onfinish}set onfinish(d){q.get(this).animation.onfinish=d}get oncancel(){return q.get(this).animation.oncancel}set oncancel(d){q.get(this).animation.oncancel=d}get onremove(){return q.get(this).animation.onremove}set onremove(d){q.get(this).animation.onremove=d}get finished(){const d=q.get(this);return d.timeline?(d.finishedPromise||(d.finishedPromise=new Sn),d.finishedPromise.promise):d.animation.finished}get ready(){const d=q.get(this);return d.timeline?(d.readyPromise||(d.readyPromise=new Sn,d.readyPromise.resolve(this)),d.readyPromise.promise):d.animation.ready}addEventListener(d,y,S){q.get(this).animation.addEventListener(d,y,S)}removeEventListener(d,y,S){q.get(this).animation.removeEventListener(d,y,S)}dispatchEvent(d){q.get(this).animation.dispatchEvent(d)}}function tl(h,d){const y=d.timeline;y instanceof je&&delete d.timeline;const S=Qc.apply(this,[h,d]),M=new Hi(S,y);return y instanceof je&&(S.pause(),q.get(M).animationRange={start:Wi(y,d.rangeStart,"start"),end:Wi(y,d.rangeEnd,"end")},M.play()),M}function Oo(h){for(let d=0;d<h.length;++d){let y=ko.get(h[d]);y&&(h[d]=y)}return h}function nl(h){return Oo(Kc.apply(this,[h]))}function il(h){return Oo(Zc.apply(this,[h]))}const Ee={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\(([^)]*)\)/},_n=["block","inline","x","y"],rl=["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 S={sheetSrc:h,index:0,name:y};for(;S.index<S.sheetSrc.length&&(this.eatWhitespace(S),!(S.index>=S.sheetSrc.length));){if(this.lookAhead("/*",S)){for(;this.lookAhead("/*",S);)this.eatComment(S),this.eatWhitespace(S);continue}const M=this.parseQualifiedRule(S);M&&(d?this.parseKeyframesAndSaveNameMapping(M,S):this.handleScrollTimelineProps(M,S))}return S.sheetSrc}getAnimationTimelineOptions(h,d){for(let y=this.cssRulesWithTimelineName.length-1;y>=0;y--){const S=this.cssRulesWithTimelineName[y];try{if(d.matches(S.selector)&&(!S["animation-name"]||S["animation-name"]==h))return{"animation-timeline":S["animation-timeline"],"animation-range":S["animation-range"]}}catch{}}return null}getAnonymousScrollTimelineOptions(h,d){const y=this.anonymousScrollTimelineOptions.get(h);return y?{anonymousSource:y.source,anonymousTarget:d,source:vo(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 S=this.sourceSelectorToScrollTimeline.length-1;S>=0;S--){const M=this.sourceSelectorToScrollTimeline[S];if(M.name==h){const k=this.findPreviousSiblingOrAncestorMatchingSelector(d,M.selector);if(k)return{source:k,...M.axis?{axis:M.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 S=this.subjectSelectorToViewTimeline.length-1;S>=0;S--){const M=this.subjectSelectorToViewTimeline[S];if(M.name==h){const k=this.findPreviousSiblingOrAncestorMatchingSelector(d,M.selector);if(k)return{subject:k,axis:M.axis,inset:M.inset}}}return null}handleScrollTimelineProps(h,d){if(h.selector.includes("@keyframes"))return;const y=h.block.contents.includes("animation-name:"),S=h.block.contents.includes("animation-timeline:"),M=h.block.contents.includes("animation:");if(this.saveSourceSelectorToScrollTimeline(h),this.saveSubjectSelectorToViewTimeline(h),!S&&!y&&!M)return;let k=[],z=[],F=!1;S&&(k=this.extractScrollTimelineNames(h.block.contents)),y&&(z=this.extractMatches(h.block.contents,Ee.ANIMATION_NAME)),S&&y||(M&&this.extractMatches(h.block.contents,Ee.ANIMATION).forEach((U=>{const V=this.extractAnimationName(U);V&&S&&z.push(V),S&&(this.hasDuration(U)||(this.hasAutoDuration(U)&&(h.block.contents=h.block.contents.replace("auto"," ")),h.block.contents=h.block.contents.replace(U," 1s "+U),F=!0))})),F&&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:"),S=h.block.contents.includes("scroll-timeline-axis:");if(!d&&!y)return;let M=[];if(d){const z=this.extractMatches(h.block.contents,Ee.SCROLL_TIMELINE);for(const F of z){const U=this.split(F);let V={selector:h.selector,name:""};U.length==1?V.name=U[0]:U.length==2&&(_n.includes(U[0])?(V.axis=U[0],V.name=U[1]):(V.axis=U[1],V.name=U[0])),M.push(V)}}if(y){const z=this.extractMatches(h.block.contents,Ee.SCROLL_TIMELINE_NAME);for(let F=0;F<z.length;F++)if(F<M.length)M[F].name=z[F];else{let U={selector:h.selector,name:z[F]};M.push(U)}}let k=[];if(S){const z=this.extractMatches(h.block.contents,Ee.SCROLL_TIMELINE_AXIS);if(k=z.filter((F=>_n.includes(F))),k.length!=z.length)throw new Error("Invalid axis")}for(let z=0;z<M.length;z++)k.length&&(M[z].axis=k[z%M.length]);this.sourceSelectorToScrollTimeline.push(...M)}saveSubjectSelectorToViewTimeline(h){const d=h.block.contents.includes("view-timeline:"),y=h.block.contents.includes("view-timeline-name:"),S=h.block.contents.includes("view-timeline-axis:"),M=h.block.contents.includes("view-timeline-inset:");if(!d&&!y)return;let k=[];if(d){const U=this.extractMatches(h.block.contents,Ee.VIEW_TIMELINE);for(let V of U){const H=this.split(V);let X={selector:h.selector,name:"",inset:null};H.length==1?X.name=H[0]:H.length==2&&(_n.includes(H[0])?(X.axis=H[0],X.name=H[1]):(X.axis=H[1],X.name=H[0])),k.push(X)}}if(y){const U=this.extractMatches(h.block.contents,Ee.VIEW_TIMELINE_NAME);for(let V=0;V<U.length;V++)if(V<k.length)k[V].name=U[V];else{let H={selector:h.selector,name:U[V],inset:null};k.push(H)}}let z=[],F=[];if(M&&(z=this.extractMatches(h.block.contents,Ee.VIEW_TIMELINE_INSET)),S){const U=this.extractMatches(h.block.contents,Ee.VIEW_TIMELINE_AXIS);if(F=U.filter((V=>_n.includes(V))),F.length!=U.length)throw new Error("Invalid axis")}for(let U=0;U<k.length;U++)z.length&&(k[U].inset=z[U%k.length]),F.length&&(k[U].axis=F[U%k.length]);this.subjectSelectorToViewTimeline.push(...k)}hasDuration(h){return h.split(" ").filter((d=>{return y=d,Ee.TIME.exec(y);var y})).length>=1}hasAutoDuration(h){return h.split(" ").filter((d=>d==="auto")).length>=1}saveRelationInList(h,d,y){let S=[];h.block.contents.includes("animation-range:")&&(S=this.extractMatches(h.block.contents,Ee.ANIMATION_TIME_RANGE));const M=Math.max(d.length,y.length,S.length);for(let k=0;k<M;k++)this.cssRulesWithTimelineName.push({selector:h.selector,"animation-timeline":d[k%d.length],...y.length?{"animation-name":y[k%y.length]}:{},...S.length?{"animation-range":S[k%S.length]}:{}})}extractScrollTimelineNames(h){const d=Ee.ANIMATION_TIMELINE.exec(h)[1].trim(),y=[];return d.split(",").map((S=>S.trim())).forEach((S=>{if((function(M){return(M.startsWith("scroll")||M.startsWith("view"))&&M.includes("(")})(S)){const M=this.saveAnonymousTimelineName(S);y.push(M)}else y.push(S)})),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=Ee.ANONYMOUS_SCROLL_TIMELINE.exec(h);if(!d)return null;const y=d[1],S={};return y.split(" ").forEach((M=>{_n.includes(M)?S.axis=M:rl.includes(M)&&(S.source=M)})),S}parseAnonymousViewTimeline(h){const d=Ee.ANONYMOUS_VIEW_TIMELINE.exec(h);if(!d)return null;const y=d[1],S={};return y.split(" ").forEach((M=>{_n.includes(M)?S.axis=M:S.inset=S.inset?`${S.inset} ${M}`:M})),S}extractAnimationName(h){return this.findMatchingEntryInContainer(h,this.keyframeNamesSelectors)}findMatchingEntryInContainer(h,d){const y=h.split(" ").filter((S=>d.has(S)));return y?y[0]:null}parseIdentifier(h){Ee.IDENTIFIER.lastIndex=h.index;const d=Ee.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(((S,M)=>{M>0&&this.keyframeNamesSelectors.set(S,y)}))}}replaceKeyframesAndGetMapping(h,d){function y(U){return Ji.some((V=>U.startsWith(V)))}const S=h.block.contents,M=(function(U){let V=0,H=-1,X=-1;const Z=[];for(let he=0;he<U.length;he++)U[he]=="{"?V++:U[he]=="}"&&V--,V==1&&U[he]!="{"&&U[he]!="}"&&H==-1&&(H=he),V==2&&U[he]=="{"&&(X=he,Z.push({start:H,end:X}),H=X=-1);return Z})(S);if(M.length==0)return new Map;const k=new Map;let z=!1;const F=[];F.push(S.substring(0,M[0].start));for(let U=0;U<M.length;U++){const V=S.substring(M[U].start,M[U].end);let H=[];V.split(",").forEach((X=>{const Z=X.split(" ").map((_e=>_e.trim())).filter((_e=>_e!="")).join(" "),he=k.size;k.set(he,Z),H.push(`${he}%`),y(Z)&&(z=!0)})),F.push(H.join(",")),U==M.length-1?F.push(S.substring(M[U].end)):F.push(S.substring(M[U].end,M[U+1].start))}return z?(h.block.contents=F.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,S){if(S.sheetSrc=S.sheetSrc.slice(0,h)+y+S.sheetSrc.slice(d),S.index>=d){const M=S.index-d;S.index=h+y.length+M}}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 S=h.index;return{startIndex:d,endIndex:S,contents:h.sheetSrc.slice(d,S)}}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 S=d.index;for(;!this.lookAhead(h,d);)this.advance(d);return y&&(d.sheetSrc=d.sheetSrc.slice(0,S)+" ".repeat(d.index-S)+d.sheetSrc.slice(d.index)),d.sheetSrc.slice(S,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){Ee.WHITE_SPACE.lastIndex=h.index;const d=Ee.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((S=>S.trim()))}split(h){return h.split(" ").map((d=>d.trim())).filter((d=>d!=""))}};function sl(h,d,y,S,M,k){const z=Gr(d),F=$r(d,y);return _o(Yr(h,z,F,S,M),k,Yr("cover",z,F,S,M),y)}function ol(h,d,y){const S=$t.getAnimationTimelineOptions(d,y);if(!S)return null;const M=S["animation-timeline"];if(!M)return null;let k=$t.getScrollTimelineOptions(M,y)||$t.getViewTimelineOptions(M,y);return k?(k.subject&&(function(z,F){const U=Xr(F.subject),V=F.axis||F.axis;function H(Z,he){let _e=null;for(const[Ye,_t]of Z)if(Ye==100*he.offset){if(_t=="from")_e=0;else if(_t=="to")_e=100;else{const ct=_t.split(" ");_e=ct.length==1?parseFloat(ct[0]):100*sl(ct[0],U,F.subject,V,F.inset,CSS.percent(parseFloat(ct[1])))}break}return _e}const X=$t.keyframeNamesSelectors.get(z.animationName);if(X&&X.size){const Z=[];z.effect.getKeyframes().forEach((_e=>{const Ye=H(X,_e);Ye!==null&&Ye>=0&&Ye<=100&&(_e.offset=Ye/100,Z.push(_e))}));const he=Z.sort(((_e,Ye)=>_e.offset<Ye.offset?-1:_e.affset>Ye.offset?1:0));z.effect.setKeyframes(he)}})(h,k),{timeline:k.source?new je(k):new vn(k),animOptions:S}):null}function al(){if(CSS.supports("animation-timeline: --works"))return!0;(function(){function d(S){if(S.innerHTML.trim().length===0||"aphrodite"in S.dataset)return;let M=$t.transpileStyleSheet(S.innerHTML,!0);M=$t.transpileStyleSheet(M,!1),S.innerHTML=M}function y(S){S.type!="text/css"&&S.rel!="stylesheet"||!S.href||new URL(S.href,document.baseURI).origin==location.origin&&fetch(S.getAttribute("href")).then((async M=>{const k=await M.text();let z=$t.transpileStyleSheet(k,!0);if(z=$t.transpileStyleSheet(k,!1),z!=k){const F=new Blob([z],{type:"text/css"}),U=URL.createObjectURL(F);S.setAttribute("href",U)}}))}new MutationObserver((S=>{for(const M of S)for(const k of M.addedNodes)k instanceof HTMLStyleElement&&d(k),k instanceof HTMLLinkElement&&y(k)})).observe(document.documentElement,{childList:!0,subtree:!0}),document.querySelectorAll("style").forEach((S=>d(S))),document.querySelectorAll("link").forEach((S=>y(S)))})();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 S=ol(y,y.animationName,d.target);if(S)if(!S.timeline||y instanceof Hi)y.timeline=S.timeline;else{const M=new Hi(y,S.timeline,S.animOptions);y.pause(),M.play()}}))}))}(function(){if(!al()){if(!Reflect.defineProperty(window,"ScrollTimeline",{value:je}))throw Error("Error installing ScrollTimeline polyfill: could not attach ScrollTimeline to window");if(!Reflect.defineProperty(window,"ViewTimeline",{value:vn}))throw Error("Error installing ViewTimeline polyfill: could not attach ViewTimeline to window");if(!Reflect.defineProperty(Element.prototype,"animate",{value:tl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's animate to DOM Element");if(!Reflect.defineProperty(window,"Animation",{value:Hi}))throw Error("Error installing Animation constructor.");if(!Reflect.defineProperty(Element.prototype,"getAnimations",{value:nl}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to DOM Element");if(!Reflect.defineProperty(document,"getAnimations",{value:il}))throw Error("Error installing ScrollTimeline polyfill: could not attach WAAPI's getAnimations to document")}})()})();class wh{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 re;(function(r){r.open="open",r.close="close",r.error="error",r.message="message",r.retry="retry",r.reconnect="reconnect"})(re||(re={}));class Dc{constructor(e,t,n){var i,s,a,o,c,l,u,f,p,m,x,T,g,v,b;this._closedByUser=!1,this.handleOpenEvent=_=>this.handleEvent(re.open,_),this.handleErrorEvent=_=>this.handleEvent(re.error,_),this.handleCloseEvent=_=>this.handleEvent(re.close,_),this.handleMessageEvent=_=>this.handleEvent(re.message,_),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:[...(p=(f=n?.listeners)===null||f===void 0?void 0:f.error)!==null&&p!==void 0?p:[]],message:[...(x=(m=n?.listeners)===null||m===void 0?void 0:m.message)!==null&&x!==void 0?x:[]],retry:[...(g=(T=n?.listeners)===null||T===void 0?void 0:T.retry)!==null&&g!==void 0?g:[]],reconnect:[...(b=(v=n?.listeners)===null||v===void 0?void 0:v.reconnect)!==null&&b!==void 0?b:[]]}},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(re.open,this.handleOpenEvent),this._underlyingWebsocket.addEventListener(re.close,this.handleCloseEvent),this._underlyingWebsocket.addEventListener(re.error,this.handleErrorEvent),this._underlyingWebsocket.addEventListener(re.message,this.handleMessageEvent),this._underlyingWebsocket}clearWebsocket(){this._underlyingWebsocket.removeEventListener(re.open,this.handleOpenEvent),this._underlyingWebsocket.removeEventListener(re.close,this.handleCloseEvent),this._underlyingWebsocket.removeEventListener(re.error,this.handleErrorEvent),this._underlyingWebsocket.removeEventListener(re.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 re.close:this.dispatchEvent(e,t),this.scheduleConnectionRetryIfNeeded();break;case re.open:if(this.backoff!==void 0&&this._lastConnection!==void 0){const n={retries:this.backoff.retries,lastConnection:new Date(this._lastConnection)},i=new CustomEvent(re.reconnect,{detail:n});this.dispatchEvent(re.reconnect,i),this.backoff.reset()}this._lastConnection=new Date,this.dispatchEvent(e,t),this.sendBufferedData();break;case re.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(re.retry,{detail:n});this.handleEvent(re.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 Ph{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(re.open,e,t),this}onClose(e,t){return this.addListener(re.close,e,t),this}onError(e,t){return this.addListener(re.error,e,t),this}onMessage(e,t){return this.addListener(re.message,e,t),this}onRetry(e,t){return this.addListener(re.retry,e,t),this}onReconnect(e,t){return this.addListener(re.reconnect,e,t),this}build(){return new Dc(this._url,this._protocols,this._options)}addListener(e,t,n){var i,s,a,o,c,l,u,f,p,m,x,T,g,v,b,_,w,C,P,E,I;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:(p=(f=(u=this._options)===null||u===void 0?void 0:u.listeners)===null||f===void 0?void 0:f.error)!==null&&p!==void 0?p:[],message:(T=(x=(m=this._options)===null||m===void 0?void 0:m.listeners)===null||x===void 0?void 0:x.message)!==null&&T!==void 0?T:[],retry:(b=(v=(g=this._options)===null||g===void 0?void 0:g.listeners)===null||v===void 0?void 0:v.retry)!==null&&b!==void 0?b:[],reconnect:(C=(w=(_=this._options)===null||_===void 0?void 0:_.listeners)===null||w===void 0?void 0:w.reconnect)!==null&&C!==void 0?C:[],[e]:[...(I=(E=(P=this._options)===null||P===void 0?void 0:P.listeners)===null||E===void 0?void 0:E[e])!==null&&I!==void 0?I:[],{listener:t,options:n}]}}),this}}const Eh=Object.freeze(Object.defineProperty({__proto__:null,ExponentialBackoff:wh,Websocket:Dc,WebsocketBuilder:Ph,get WebsocketEvent(){return re}},Symbol.toStringTag,{value:"Module"})),uo=0,Fc=1,Lc=2,$s=2,xs=1.25,_a=1,ii=32,Lr=65535,kh=Math.pow(2,-24),_s=Symbol("SKIP_GENERATION");function Rh(r){return r.index?r.index.count:r.attributes.position.count}function Un(r){return Rh(r)/3}function Ah(r,e=ArrayBuffer){return r>65535?new Uint32Array(new e(4*r)):new Uint16Array(new e(2*r))}function Oh(r,e){if(!r.index){const t=r.attributes.position.count,n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Ah(t,n);r.setIndex(new R.BufferAttribute(i,1));for(let s=0;s<t;s++)i[s]=s}}function Vc(r,e){const t=Un(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 Jc(r,e){if(!r.groups||!r.groups.length)return Vc(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 zh(r,e){const t=Un(r),n=Jc(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 bs(r,e,t,n,i){let s=1/0,a=1/0,o=1/0,c=-1/0,l=-1/0,u=-1/0,f=1/0,p=1/0,m=1/0,x=-1/0,T=-1/0,g=-1/0;for(let v=e*6,b=(e+t)*6;v<b;v+=6){const _=r[v+0],w=r[v+1],C=_-w,P=_+w;C<s&&(s=C),P>c&&(c=P),_<f&&(f=_),_>x&&(x=_);const E=r[v+2],I=r[v+3],O=E-I,A=E+I;O<a&&(a=O),A>l&&(l=A),E<p&&(p=E),E>T&&(T=E);const N=r[v+4],B=r[v+5],D=N-B,L=N+B;D<o&&(o=D),L>u&&(u=L),N<m&&(m=N),N>g&&(g=N)}n[0]=s,n[1]=a,n[2]=o,n[3]=c,n[4]=l,n[5]=u,i[0]=f,i[1]=p,i[2]=m,i[3]=x,i[4]=T,i[5]=g}function Ih(r,e=null,t=null,n=null){const i=r.attributes.position,s=r.index?r.index.array:null,a=Un(r),o=i.normalized;let c;e===null?(c=new Float32Array(a*6),t=0,n=a):(c=e,t=t||0,n=n||a);const l=i.array,u=i.offset||0;let f=3;i.isInterleavedBufferAttribute&&(f=i.data.stride);const p=["getX","getY","getZ"];for(let m=t;m<t+n;m++){const x=m*3,T=m*6;let g=x+0,v=x+1,b=x+2;s&&(g=s[g],v=s[v],b=s[b]),o||(g=g*f+u,v=v*f+u,b=b*f+u);for(let _=0;_<3;_++){let w,C,P;o?(w=i[p[_]](g),C=i[p[_]](v),P=i[p[_]](b)):(w=l[g+_],C=l[v+_],P=l[b+_]);let E=w;C<E&&(E=C),P<E&&(E=P);let I=w;C>I&&(I=C),P>I&&(I=P);const O=(I-E)/2,A=_*2;c[T+A+0]=E+O,c[T+A+1]=O+(Math.abs(E)+O)*kh}}return c}function ve(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 ba(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 Ta(r,e){e.set(r)}function Ma(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 rr(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 jn(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 Ft=32,Bh=(r,e)=>r.candidate-e.candidate,qt=new Array(Ft).fill().map(()=>({count:0,bounds:new Float32Array(6),rightCacheBounds:new Float32Array(6),leftCacheBounds:new Float32Array(6),candidate:0})),sr=new Float32Array(6);function Nh(r,e,t,n,i,s){let a=-1,o=0;if(s===uo)a=ba(e),a!==-1&&(o=(e[a]+e[a+3])/2);else if(s===Fc)a=ba(r),a!==-1&&(o=Uh(t,n,i,a));else if(s===Lc){const c=jn(r);let l=xs*i;const u=n*6,f=(n+i)*6;for(let p=0;p<3;p++){const m=e[p],g=(e[p+3]-m)/Ft;if(i<Ft/4){const v=[...qt];v.length=i;let b=0;for(let w=u;w<f;w+=6,b++){const C=v[b];C.candidate=t[w+2*p],C.count=0;const{bounds:P,leftCacheBounds:E,rightCacheBounds:I}=C;for(let O=0;O<3;O++)I[O]=1/0,I[O+3]=-1/0,E[O]=1/0,E[O+3]=-1/0,P[O]=1/0,P[O+3]=-1/0;rr(w,t,P)}v.sort(Bh);let _=i;for(let w=0;w<_;w++){const C=v[w];for(;w+1<_&&v[w+1].candidate===C.candidate;)v.splice(w+1,1),_--}for(let w=u;w<f;w+=6){const C=t[w+2*p];for(let P=0;P<_;P++){const E=v[P];C>=E.candidate?rr(w,t,E.rightCacheBounds):(rr(w,t,E.leftCacheBounds),E.count++)}}for(let w=0;w<_;w++){const C=v[w],P=C.count,E=i-C.count,I=C.leftCacheBounds,O=C.rightCacheBounds;let A=0;P!==0&&(A=jn(I)/c);let N=0;E!==0&&(N=jn(O)/c);const B=_a+xs*(A*P+N*E);B<l&&(a=p,l=B,o=C.candidate)}}else{for(let _=0;_<Ft;_++){const w=qt[_];w.count=0,w.candidate=m+g+_*g;const C=w.bounds;for(let P=0;P<3;P++)C[P]=1/0,C[P+3]=-1/0}for(let _=u;_<f;_+=6){let P=~~((t[_+2*p]-m)/g);P>=Ft&&(P=Ft-1);const E=qt[P];E.count++,rr(_,t,E.bounds)}const v=qt[Ft-1];Ta(v.bounds,v.rightCacheBounds);for(let _=Ft-2;_>=0;_--){const w=qt[_],C=qt[_+1];Ma(w.bounds,C.rightCacheBounds,w.rightCacheBounds)}let b=0;for(let _=0;_<Ft-1;_++){const w=qt[_],C=w.count,P=w.bounds,I=qt[_+1].rightCacheBounds;C!==0&&(b===0?Ta(P,sr):Ma(P,sr,sr)),b+=C;let O=0,A=0;b!==0&&(O=jn(sr)/c);const N=i-b;N!==0&&(A=jn(I)/c);const B=_a+xs*(O*b+A*N);B<l&&(a=p,l=B,o=w.candidate)}}}}else console.warn(`MeshBVH: Invalid build strategy value ${s} used.`);return{axis:a,pos:o}}function Uh(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 Ts{constructor(){this.boundingData=new Float32Array(6)}}function Dh(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 f=e[a*3+u];e[a*3+u]=e[o*3+u],e[o*3+u]=f}for(let u=0;u<6;u++){let f=t[a*6+u];t[a*6+u]=t[o*6+u],t[o*6+u]=f}a++,o--}else return a}}function Fh(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 f=0;f<6;f++){let p=t[a*6+f];t[a*6+f]=t[o*6+f],t[o*6+f]=p}a++,o--}else return a}}function Ke(r,e){return e[r+15]===65535}function rt(r,e){return e[r+6]}function ut(r,e){return e[r+14]}function ht(r){return r+8}function ft(r,e){return e[r+6]}function jc(r,e){return e[r+7]}let Gc,ei,Cr,$c;const Lh=Math.pow(2,32);function Ws(r){return"count"in r?1:1+Ws(r.left)+Ws(r.right)}function Vh(r,e,t){return Gc=new Float32Array(t),ei=new Uint32Array(t),Cr=new Uint16Array(t),$c=new Uint8Array(t),Hs(r,e)}function Hs(r,e){const t=r/4,n=r/2,i="count"in e,s=e.boundingData;for(let a=0;a<6;a++)Gc[t+a]=s[a];if(i)if(e.buffer){const a=e.buffer;$c.set(new Uint8Array(a),r);for(let o=r,c=r+a.byteLength;o<c;o+=ii){const l=o/2;Ke(l,Cr)||(ei[o/4+6]+=t)}return r+a.byteLength}else{const a=e.offset,o=e.count;return ei[t+6]=a,Cr[n+14]=o,Cr[n+15]=Lr,r+ii}else{const a=e.left,o=e.right,c=e.splitAxis;let l;if(l=Hs(r+ii,a),l/4>Lh)throw new Error("MeshBVH: Cannot store child pointer greater than 32 bits.");return ei[t+6]=l/4,l=Hs(l,o),ei[t+7]=c,l}}function Jh(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 jh(r,e,t,n,i){const{maxDepth:s,verbose:a,maxLeafTris:o,strategy:c,onProgress:l,indirect:u}=i,f=r._indirectBuffer,p=r.geometry,m=p.index?p.index.array:null,x=u?Fh:Dh,T=Un(p),g=new Float32Array(6);let v=!1;const b=new Ts;return bs(e,t,n,b.boundingData,g),w(b,t,n,g),b;function _(C){l&&l(C/T)}function w(C,P,E,I=null,O=0){if(!v&&O>=s&&(v=!0,a&&(console.warn(`MeshBVH: Max depth of ${s} reached when generating BVH. Consider increasing maxDepth.`),console.warn(p))),E<=o||O>=s)return _(P+E),C.offset=P,C.count=E,C;const A=Nh(C.boundingData,I,e,P,E,c);if(A.axis===-1)return _(P+E),C.offset=P,C.count=E,C;const N=x(f,m,e,P,E,A);if(N===P||N===P+E)_(P+E),C.offset=P,C.count=E;else{C.splitAxis=A.axis;const B=new Ts,D=P,L=N-P;C.left=B,bs(e,D,L,B.boundingData,g),w(B,D,L,g,O+1);const J=new Ts,W=N,Y=E-L;C.right=J,bs(e,W,Y,J.boundingData,g),w(J,W,Y,g,O+1)}return C}}function Gh(r,e){const t=r.geometry;e.indirect&&(r._indirectBuffer=Jh(t,e.useSharedArrayBuffer),zh(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||Oh(t,e);const n=e.useSharedArrayBuffer?SharedArrayBuffer:ArrayBuffer,i=Ih(t),s=e.indirect?Vc(t,e.range):Jc(t,e.range);r._roots=s.map(a=>{const o=jh(r,i,a.offset,a.count,e),c=Ws(o),l=new n(ii*c);return Vh(0,o,l),l})}class Gt{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 c=e[s][t];n=c<n?c:n,i=c>i?c: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}}Gt.prototype.setFromBox=(function(){const r=new R.Vector3;return function(t,n){const i=n.min,s=n.max;let a=1/0,o=-1/0;for(let c=0;c<=1;c++)for(let l=0;l<=1;l++)for(let u=0;u<=1;u++){r.x=i.x*c+s.x*(1-c),r.y=i.y*l+s.y*(1-l),r.z=i.z*u+s.z*(1-u);const f=t.dot(r);a=Math.min(f,a),o=Math.max(f,o)}this.min=a,this.max=o}})();const $h=(function(){const r=new R.Vector3,e=new R.Vector3,t=new R.Vector3;return function(i,s,a){const o=i.start,c=r,l=s.start,u=e;t.subVectors(o,l),r.subVectors(i.end,i.start),e.subVectors(s.end,s.start);const f=t.dot(u),p=u.dot(c),m=u.dot(u),x=t.dot(c),g=c.dot(c)*m-p*p;let v,b;g!==0?v=(f*p-x*m)/g:v=0,b=(f+v*p)/m,a.x=v,a.y=b}})(),ho=(function(){const r=new R.Vector2,e=new R.Vector3,t=new R.Vector3;return function(i,s,a,o){$h(i,s,r);let c=r.x,l=r.y;if(c>=0&&c<=1&&l>=0&&l<=1){i.at(c,a),s.at(l,o);return}else if(c>=0&&c<=1){l<0?s.at(0,o):s.at(1,o),i.closestPointToPoint(o,!0,a);return}else if(l>=0&&l<=1){c<0?i.at(0,a):i.at(1,a),s.closestPointToPoint(a,!0,o);return}else{let u;c<0?u=i.start:u=i.end;let f;l<0?f=s.start:f=s.end;const p=e,m=t;if(i.closestPointToPoint(f,!0,e),s.closestPointToPoint(u,!0,t),p.distanceToSquared(f)<=m.distanceToSquared(u)){a.copy(p),o.copy(f);return}else{a.copy(u),o.copy(m);return}}}})(),Wh=(function(){const r=new R.Vector3,e=new R.Vector3,t=new R.Plane,n=new R.Line3;return function(s,a){const{radius:o,center:c}=s,{a:l,b:u,c:f}=a;if(n.start=l,n.end=u,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o||(n.start=l,n.end=f,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o)||(n.start=u,n.end=f,n.closestPointToPoint(c,!0,r).distanceTo(c)<=o))return!0;const T=a.getPlane(t);if(Math.abs(T.distanceToPoint(c))<=o){const v=T.projectPoint(c,e);if(a.containsPoint(v))return!0}return!1}})(),Hh=1e-15;function Ms(r){return Math.abs(r)<Hh}class pt extends R.Triangle{constructor(...e){super(...e),this.isExtendedTriangle=!0,this.satAxes=new Array(4).fill().map(()=>new R.Vector3),this.satBounds=new Array(4).fill().map(()=>new Gt),this.points=[this.a,this.b,this.c],this.sphere=new R.Sphere,this.plane=new R.Plane,this.needsUpdate=!0}intersectsSphere(e){return Wh(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 f=s[2],p=a[2];f.subVectors(t,n),p.setFromPoints(f,i);const m=s[3],x=a[3];m.subVectors(n,e),x.setFromPoints(m,i),this.sphere.setFromPoints(this.points),this.plane.setFromNormalAndCoplanarPoint(o,e),this.needsUpdate=!1}}pt.prototype.closestPointToSegment=(function(){const r=new R.Vector3,e=new R.Vector3,t=new R.Line3;return function(i,s=null,a=null){const{start:o,end:c}=i,l=this.points;let u,f=1/0;for(let p=0;p<3;p++){const m=(p+1)%3;t.start.copy(l[p]),t.end.copy(l[m]),ho(t,i,r,e),u=r.distanceToSquared(e),u<f&&(f=u,s&&s.copy(r),a&&a.copy(e))}return this.closestPointToPoint(o,r),u=o.distanceToSquared(r),u<f&&(f=u,s&&s.copy(r),a&&a.copy(o)),this.closestPointToPoint(c,r),u=c.distanceToSquared(r),u<f&&(f=u,s&&s.copy(r),a&&a.copy(c)),Math.sqrt(f)}})();pt.prototype.intersectsTriangle=(function(){const r=new pt,e=new Array(3),t=new Array(3),n=new Gt,i=new Gt,s=new R.Vector3,a=new R.Vector3,o=new R.Vector3,c=new R.Vector3,l=new R.Vector3,u=new R.Line3,f=new R.Line3,p=new R.Line3,m=new R.Vector3;function x(T,g,v){const b=T.points;let _=0,w=-1;for(let C=0;C<3;C++){const{start:P,end:E}=u;P.copy(b[C]),E.copy(b[(C+1)%3]),u.delta(a);const I=Ms(g.distanceToPoint(P));if(Ms(g.normal.dot(a))&&I){v.copy(u),_=2;break}const O=g.intersectLine(u,m);if(!O&&I&&m.copy(P),(O||I)&&!Ms(m.distanceTo(E))){if(_<=1)(_===1?v.start:v.end).copy(m),I&&(w=_);else if(_>=2){(w===1?v.start:v.end).copy(m),_=2;break}if(_++,_===2&&w===-1)break}}return _}return function(g,v=null,b=!1){this.needsUpdate&&this.update(),g.isExtendedTriangle?g.needsUpdate&&g.update():(r.copy(g),r.update(),g=r);const _=this.plane,w=g.plane;if(Math.abs(_.normal.dot(w.normal))>1-1e-10){const C=this.satBounds,P=this.satAxes;t[0]=g.a,t[1]=g.b,t[2]=g.c;for(let O=0;O<4;O++){const A=C[O],N=P[O];if(n.setFromPoints(N,t),A.isSeparated(n))return!1}const E=g.satBounds,I=g.satAxes;e[0]=this.a,e[1]=this.b,e[2]=this.c;for(let O=0;O<4;O++){const A=E[O],N=I[O];if(n.setFromPoints(N,e),A.isSeparated(n))return!1}for(let O=0;O<4;O++){const A=P[O];for(let N=0;N<4;N++){const B=I[N];if(s.crossVectors(A,B),n.setFromPoints(s,e),i.setFromPoints(s,t),n.isSeparated(i))return!1}}return v&&(b||console.warn("ExtendedTriangle.intersectsTriangle: Triangles are coplanar which does not support an output edge. Setting edge to 0, 0, 0."),v.start.set(0,0,0),v.end.set(0,0,0)),!0}else{const C=x(this,w,f);if(C===1&&g.containsPoint(f.end))return v&&(v.start.copy(f.end),v.end.copy(f.end)),!0;if(C!==2)return!1;const P=x(g,_,p);if(P===1&&this.containsPoint(p.end))return v&&(v.start.copy(p.end),v.end.copy(p.end)),!0;if(P!==2)return!1;if(f.delta(o),p.delta(c),o.dot(c)<0){let D=p.start;p.start=p.end,p.end=D}const E=f.start.dot(o),I=f.end.dot(o),O=p.start.dot(o),A=p.end.dot(o),N=I<O,B=E<A;return E!==A&&O!==I&&N===B?!1:(v&&(l.subVectors(f.start,p.start),l.dot(o)>0?v.start.copy(f.start):v.start.copy(p.start),l.subVectors(f.end,p.end),l.dot(o)<0?v.end.copy(f.end):v.end.copy(p.end)),!0)}}})();pt.prototype.distanceToPoint=(function(){const r=new R.Vector3;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}})();pt.prototype.distanceToTriangle=(function(){const r=new R.Vector3,e=new R.Vector3,t=["a","b","c"],n=new R.Line3,i=new R.Line3;return function(a,o=null,c=null){const l=o||c?n:null;if(this.intersectsTriangle(a,l))return(o||c)&&(o&&l.getCenter(o),c&&l.getCenter(c)),0;let u=1/0;for(let f=0;f<3;f++){let p;const m=t[f],x=a[m];this.closestPointToPoint(x,r),p=x.distanceToSquared(r),p<u&&(u=p,o&&o.copy(r),c&&c.copy(x));const T=this[m];a.closestPointToPoint(T,r),p=T.distanceToSquared(r),p<u&&(u=p,o&&o.copy(T),c&&c.copy(r))}for(let f=0;f<3;f++){const p=t[f],m=t[(f+1)%3];n.set(this[p],this[m]);for(let x=0;x<3;x++){const T=t[x],g=t[(x+1)%3];i.set(a[T],a[g]),ho(n,i,r,e);const v=r.distanceToSquared(e);v<u&&(u=v,o&&o.copy(r),c&&c.copy(e))}}return Math.sqrt(u)}})();class Le{constructor(e,t,n){this.isOrientedBox=!0,this.min=new R.Vector3,this.max=new R.Vector3,this.matrix=new R.Matrix4,this.invMatrix=new R.Matrix4,this.points=new Array(8).fill().map(()=>new R.Vector3),this.satAxes=new Array(3).fill().map(()=>new R.Vector3),this.satBounds=new Array(3).fill().map(()=>new Gt),this.alignedSatBounds=new Array(3).fill().map(()=>new Gt),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}}Le.prototype.update=(function(){return function(){const e=this.matrix,t=this.min,n=this.max,i=this.points;for(let l=0;l<=1;l++)for(let u=0;u<=1;u++)for(let f=0;f<=1;f++){const p=1*l|2*u|4*f,m=i[p];m.x=l?n.x:t.x,m.y=u?n.y:t.y,m.z=f?n.z:t.z,m.applyMatrix4(e)}const s=this.satBounds,a=this.satAxes,o=i[0];for(let l=0;l<3;l++){const u=a[l],f=s[l],p=1<<l,m=i[p];u.subVectors(o,m),f.setFromPoints(u,i)}const c=this.alignedSatBounds;c[0].setFromPointsField(i,"x"),c[1].setFromPointsField(i,"y"),c[2].setFromPointsField(i,"z"),this.invMatrix.copy(this.matrix).invert(),this.needsUpdate=!1}})();Le.prototype.intersectsBox=(function(){const r=new Gt;return function(t){this.needsUpdate&&this.update();const n=t.min,i=t.max,s=this.satBounds,a=this.satAxes,o=this.alignedSatBounds;if(r.min=n.x,r.max=i.x,o[0].isSeparated(r)||(r.min=n.y,r.max=i.y,o[1].isSeparated(r))||(r.min=n.z,r.max=i.z,o[2].isSeparated(r)))return!1;for(let c=0;c<3;c++){const l=a[c],u=s[c];if(r.setFromBox(l,t),u.isSeparated(r))return!1}return!0}})();Le.prototype.intersectsTriangle=(function(){const r=new pt,e=new Array(3),t=new Gt,n=new Gt,i=new R.Vector3;return function(a){this.needsUpdate&&this.update(),a.isExtendedTriangle?a.needsUpdate&&a.update():(r.copy(a),r.update(),a=r);const o=this.satBounds,c=this.satAxes;e[0]=a.a,e[1]=a.b,e[2]=a.c;for(let p=0;p<3;p++){const m=o[p],x=c[p];if(t.setFromPoints(x,e),m.isSeparated(t))return!1}const l=a.satBounds,u=a.satAxes,f=this.points;for(let p=0;p<3;p++){const m=l[p],x=u[p];if(t.setFromPoints(x,f),m.isSeparated(t))return!1}for(let p=0;p<3;p++){const m=c[p];for(let x=0;x<4;x++){const T=u[x];if(i.crossVectors(m,T),t.setFromPoints(i,e),n.setFromPoints(i,f),t.isSeparated(n))return!1}}return!0}})();Le.prototype.closestPointToPoint=(function(){return function(e,t){return this.needsUpdate&&this.update(),t.copy(e).applyMatrix4(this.invMatrix).clamp(this.min,this.max).applyMatrix4(this.matrix),t}})();Le.prototype.distanceToPoint=(function(){const r=new R.Vector3;return function(t){return this.closestPointToPoint(t,r),t.distanceTo(r)}})();Le.prototype.distanceToBox=(function(){const r=["x","y","z"],e=new Array(12).fill().map(()=>new R.Line3),t=new Array(12).fill().map(()=>new R.Line3),n=new R.Vector3,i=new R.Vector3;return function(a,o=0,c=null,l=null){if(this.needsUpdate&&this.update(),this.intersectsBox(a))return(c||l)&&(a.getCenter(i),this.closestPointToPoint(i,n),a.closestPointToPoint(n,i),c&&c.copy(n),l&&l.copy(i)),0;const u=o*o,f=a.min,p=a.max,m=this.points;let x=1/0;for(let g=0;g<8;g++){const v=m[g];i.copy(v).clamp(f,p);const b=v.distanceToSquared(i);if(b<x&&(x=b,c&&c.copy(v),l&&l.copy(i),b<u))return Math.sqrt(b)}let T=0;for(let g=0;g<3;g++)for(let v=0;v<=1;v++)for(let b=0;b<=1;b++){const _=(g+1)%3,w=(g+2)%3,C=v<<_|b<<w,P=1<<g|v<<_|b<<w,E=m[C],I=m[P];e[T].set(E,I);const A=r[g],N=r[_],B=r[w],D=t[T],L=D.start,J=D.end;L[A]=f[A],L[N]=v?f[N]:p[N],L[B]=b?f[B]:p[N],J[A]=p[A],J[N]=v?f[N]:p[N],J[B]=b?f[B]:p[N],T++}for(let g=0;g<=1;g++)for(let v=0;v<=1;v++)for(let b=0;b<=1;b++){i.x=g?p.x:f.x,i.y=v?p.y:f.y,i.z=b?p.z:f.z,this.closestPointToPoint(i,n);const _=i.distanceToSquared(n);if(_<x&&(x=_,c&&c.copy(n),l&&l.copy(i),_<u))return Math.sqrt(_)}for(let g=0;g<12;g++){const v=e[g];for(let b=0;b<12;b++){const _=t[b];ho(v,_,n,i);const w=n.distanceToSquared(i);if(w<x&&(x=w,c&&c.copy(n),l&&l.copy(i),w<u))return Math.sqrt(w)}}return Math.sqrt(x)}})();class fo{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 qh extends fo{constructor(){super(()=>new pt)}}const dt=new qh;class Xh{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 fe=new Xh;let Kt,An;const Tn=[],or=new fo(()=>new R.Box3);function Yh(r,e,t,n,i,s){Kt=or.getPrimitive(),An=or.getPrimitive(),Tn.push(Kt,An),fe.setBuffer(r._roots[e]);const a=qs(0,r.geometry,t,n,i,s);fe.clearBuffer(),or.releasePrimitive(Kt),or.releasePrimitive(An),Tn.pop(),Tn.pop();const o=Tn.length;return o>0&&(An=Tn[o-1],Kt=Tn[o-2]),a}function qs(r,e,t,n,i=null,s=0,a=0){const{float32Array:o,uint16Array:c,uint32Array:l}=fe;let u=r*2;if(Ke(u,c)){const p=rt(r,l),m=ut(u,c);return ve(r,o,Kt),n(p,m,!1,a,s+r,Kt)}else{let A=function(B){const{uint16Array:D,uint32Array:L}=fe;let J=B*2;for(;!Ke(J,D);)B=ht(B),J=B*2;return rt(B,L)},N=function(B){const{uint16Array:D,uint32Array:L}=fe;let J=B*2;for(;!Ke(J,D);)B=ft(B,L),J=B*2;return rt(B,L)+ut(J,D)};const p=ht(r),m=ft(r,l);let x=p,T=m,g,v,b,_;if(i&&(b=Kt,_=An,ve(x,o,b),ve(T,o,_),g=i(b),v=i(_),v<g)){x=m,T=p;const B=g;g=v,v=B,b=_}b||(b=Kt,ve(x,o,b));const w=Ke(x*2,c),C=t(b,w,g,a+1,s+x);let P;if(C===$s){const B=A(x),L=N(x)-B;P=n(B,L,!0,a+1,s+x,b)}else P=C&&qs(x,e,t,n,i,s,a+1);if(P)return!0;_=An,ve(T,o,_);const E=Ke(T*2,c),I=t(_,E,v,a+1,s+T);let O;if(I===$s){const B=A(T),L=N(T)-B;O=n(B,L,!0,a+1,s+T,_)}else O=I&&qs(T,e,t,n,i,s,a+1);return!!O}}const Gn=new R.Vector3,Cs=new R.Vector3;function Zh(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=>(Gn.copy(e).clamp(u.min,u.max),Gn.distanceToSquared(e)),intersectsBounds:(u,f,p)=>p<o&&p<a,intersectsTriangle:(u,f)=>{u.closestPointToPoint(e,Gn);const p=e.distanceToSquared(Gn);return p<o&&(Cs.copy(Gn),o=p,c=f),p<s}}),o===1/0)return null;const l=Math.sqrt(o);return t.point?t.point.copy(Cs):t.point=Cs.clone(),t.distance=l,t.faceIndex=c,t}const Kh=parseInt(R.REVISION)>=169,sn=new R.Vector3,on=new R.Vector3,an=new R.Vector3,ar=new R.Vector2,cr=new R.Vector2,lr=new R.Vector2,Ca=new R.Vector3,wa=new R.Vector3,Pa=new R.Vector3,$n=new R.Vector3;function Qh(r,e,t,n,i,s,a,o){let c;if(s===R.BackSide?c=r.intersectTriangle(n,t,e,!0,i):c=r.intersectTriangle(e,t,n,s!==R.DoubleSide,i),c===null)return null;const l=r.origin.distanceTo(i);return l<a||l>o?null:{distance:l,point:i.clone()}}function ef(r,e,t,n,i,s,a,o,c,l,u){sn.fromBufferAttribute(e,s),on.fromBufferAttribute(e,a),an.fromBufferAttribute(e,o);const f=Qh(r,sn,on,an,$n,c,l,u);if(f){const p=new R.Vector3;R.Triangle.getBarycoord($n,sn,on,an,p),n&&(ar.fromBufferAttribute(n,s),cr.fromBufferAttribute(n,a),lr.fromBufferAttribute(n,o),f.uv=R.Triangle.getInterpolation($n,sn,on,an,ar,cr,lr,new R.Vector2)),i&&(ar.fromBufferAttribute(i,s),cr.fromBufferAttribute(i,a),lr.fromBufferAttribute(i,o),f.uv1=R.Triangle.getInterpolation($n,sn,on,an,ar,cr,lr,new R.Vector2)),t&&(Ca.fromBufferAttribute(t,s),wa.fromBufferAttribute(t,a),Pa.fromBufferAttribute(t,o),f.normal=R.Triangle.getInterpolation($n,sn,on,an,Ca,wa,Pa,new R.Vector3),f.normal.dot(r.direction)>0&&f.normal.multiplyScalar(-1));const m={a:s,b:a,c:o,normal:new R.Vector3,materialIndex:0};R.Triangle.getNormal(sn,on,an,m.normal),f.face=m,f.faceIndex=s,Kh&&(f.barycoord=p)}return f}function Vr(r,e,t,n,i,s,a){const o=n*3;let c=o+0,l=o+1,u=o+2;const f=r.index;r.index&&(c=f.getX(c),l=f.getX(l),u=f.getX(u));const{position:p,normal:m,uv:x,uv1:T}=r.attributes,g=ef(t,p,m,x,T,c,l,u,e,s,a);return g?(g.faceIndex=n,i&&i.push(g),g):null}function Me(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 tf(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let u=n,f=n+i;u<f;u++)Vr(c,e,t,u,s,a,o)}function nf(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,u=null;for(let f=n,p=n+i;f<p;f++){let m;m=Vr(o,e,t,f,null,s,a),m&&m.distance<l&&(u=m,l=m.distance)}return u}function rf(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let u=r,f=e+r;u<f;u++){let p;if(p=u,Me(a,p*3,c,l),a.needsUpdate=!0,n(a,p,i,s))return!0}return!1}function sf(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 p=0,m=u.length;p<m;p++)s=u[p],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),f(0,l),l+=s.byteLength;function f(p,m,x=!1){const T=p*2;if(o[T+15]===Lr){const v=a[p+6],b=o[T+14];let _=1/0,w=1/0,C=1/0,P=-1/0,E=-1/0,I=-1/0;for(let O=3*v,A=3*(v+b);O<A;O++){let N=n[O];const B=i.getX(N),D=i.getY(N),L=i.getZ(N);B<_&&(_=B),B>P&&(P=B),D<w&&(w=D),D>E&&(E=D),L<C&&(C=L),L>I&&(I=L)}return c[p+0]!==_||c[p+1]!==w||c[p+2]!==C||c[p+3]!==P||c[p+4]!==E||c[p+5]!==I?(c[p+0]=_,c[p+1]=w,c[p+2]=C,c[p+3]=P,c[p+4]=E,c[p+5]=I,!0):!1}else{const v=p+8,b=a[p+6],_=v+m,w=b+m;let C=x,P=!1,E=!1;e?C||(P=e.has(_),E=e.has(w),C=!P&&!E):(P=!0,E=!0);const I=C||P,O=C||E;let A=!1;I&&(A=f(v,m,C));let N=!1;O&&(N=f(b,m,C));const B=A||N;if(B)for(let D=0;D<3;D++){const L=v+D,J=b+D,W=c[L],Y=c[L+3],G=c[J],se=c[J+3];c[p+D]=W<G?W:G,c[p+D+3]=Y>se?Y:se}return B}}}function Qt(r,e,t,n,i){let s,a,o,c,l,u;const f=1/t.direction.x,p=1/t.direction.y,m=1/t.direction.z,x=t.origin.x,T=t.origin.y,g=t.origin.z;let v=e[r],b=e[r+3],_=e[r+1],w=e[r+3+1],C=e[r+2],P=e[r+3+2];return f>=0?(s=(v-x)*f,a=(b-x)*f):(s=(b-x)*f,a=(v-x)*f),p>=0?(o=(_-T)*p,c=(w-T)*p):(o=(w-T)*p,c=(_-T)*p),s>c||o>a||((o>s||isNaN(s))&&(s=o),(c<a||isNaN(a))&&(a=c),m>=0?(l=(C-g)*m,u=(P-g)*m):(l=(P-g)*m,u=(C-g)*m),s>u||l>a)?!1:((l>s||s!==s)&&(s=l),(u<a||a!==a)&&(a=u),s<=i&&a>=n)}function of(r,e,t,n,i,s,a,o){const{geometry:c,_indirectBuffer:l}=r;for(let u=n,f=n+i;u<f;u++){let p=l?l[u]:u;Vr(c,e,t,p,s,a,o)}}function af(r,e,t,n,i,s,a){const{geometry:o,_indirectBuffer:c}=r;let l=1/0,u=null;for(let f=n,p=n+i;f<p;f++){let m;m=Vr(o,e,t,c?c[f]:f,null,s,a),m&&m.distance<l&&(u=m,l=m.distance)}return u}function cf(r,e,t,n,i,s,a){const{geometry:o}=t,{index:c}=o,l=o.attributes.position;for(let u=r,f=e+r;u<f;u++){let p;if(p=t.resolveTriangleIndex(u),Me(a,p*3,c,l),a.needsUpdate=!0,n(a,p,i,s))return!0}return!1}function lf(r,e,t,n,i,s,a){fe.setBuffer(r._roots[e]),Xs(0,r,t,n,i,s,a),fe.clearBuffer()}function Xs(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=fe,u=r*2;if(Ke(u,c)){const p=rt(r,l),m=ut(u,c);tf(e,t,n,p,m,i,s,a)}else{const p=ht(r);Qt(p,o,n,s,a)&&Xs(p,e,t,n,i,s,a);const m=ft(r,l);Qt(m,o,n,s,a)&&Xs(m,e,t,n,i,s,a)}}const uf=["x","y","z"];function hf(r,e,t,n,i,s){fe.setBuffer(r._roots[e]);const a=Ys(0,r,t,n,i,s);return fe.clearBuffer(),a}function Ys(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=fe;let l=r*2;if(Ke(l,o)){const f=rt(r,c),p=ut(l,o);return nf(e,t,n,f,p,i,s)}else{const f=jc(r,c),p=uf[f],x=n.direction[p]>=0;let T,g;x?(T=ht(r),g=ft(r,c)):(T=ft(r,c),g=ht(r));const b=Qt(T,a,n,i,s)?Ys(T,e,t,n,i,s):null;if(b){const C=b.point[p];if(x?C<=a[g+f]:C>=a[g+f+3])return b}const w=Qt(g,a,n,i,s)?Ys(g,e,t,n,i,s):null;return b&&w?b.distance<=w.distance?b:w:b||w||null}}const ur=new R.Box3,Mn=new pt,Cn=new pt,Wn=new R.Matrix4,Ea=new Le,hr=new Le;function ff(r,e,t,n){fe.setBuffer(r._roots[e]);const i=Zs(0,r,t,n);return fe.clearBuffer(),i}function Zs(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=fe;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),Ea.set(t.boundingBox.min,t.boundingBox.max,n),i=Ea),Ke(c,a)){const u=e.geometry,f=u.index,p=u.attributes.position,m=t.index,x=t.attributes.position,T=rt(r,o),g=ut(c,a);if(Wn.copy(n).invert(),t.boundsTree)return ve(r,s,hr),hr.matrix.copy(Wn),hr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:b=>hr.intersectsBox(b),intersectsTriangle:b=>{b.a.applyMatrix4(n),b.b.applyMatrix4(n),b.c.applyMatrix4(n),b.needsUpdate=!0;for(let _=T*3,w=(g+T)*3;_<w;_+=3)if(Me(Cn,_,f,p),Cn.needsUpdate=!0,b.intersectsTriangle(Cn))return!0;return!1}});for(let v=T*3,b=(g+T)*3;v<b;v+=3){Me(Mn,v,f,p),Mn.a.applyMatrix4(Wn),Mn.b.applyMatrix4(Wn),Mn.c.applyMatrix4(Wn),Mn.needsUpdate=!0;for(let _=0,w=m.count;_<w;_+=3)if(Me(Cn,_,m,x),Cn.needsUpdate=!0,Mn.intersectsTriangle(Cn))return!0}}else{const u=r+8,f=o[r+6];return ve(u,s,ur),!!(i.intersectsBox(ur)&&Zs(u,e,t,n,i)||(ve(f,s,ur),i.intersectsBox(ur)&&Zs(f,e,t,n,i)))}}const fr=new R.Matrix4,ws=new Le,Hn=new Le,df=new R.Vector3,pf=new R.Vector3,mf=new R.Vector3,yf=new R.Vector3;function gf(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),ws.set(e.boundingBox.min,e.boundingBox.max,t),ws.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,u=e.attributes.position,f=e.index,p=dt.getPrimitive(),m=dt.getPrimitive();let x=df,T=pf,g=null,v=null;i&&(g=mf,v=yf);let b=1/0,_=null,w=null;return fr.copy(t).invert(),Hn.matrix.copy(fr),r.shapecast({boundsTraverseOrder:C=>ws.distanceToBox(C),intersectsBounds:(C,P,E)=>E<b&&E<a?(P&&(Hn.min.copy(C.min),Hn.max.copy(C.max),Hn.needsUpdate=!0),!0):!1,intersectsRange:(C,P)=>{if(e.boundsTree)return e.boundsTree.shapecast({boundsTraverseOrder:I=>Hn.distanceToBox(I),intersectsBounds:(I,O,A)=>A<b&&A<a,intersectsRange:(I,O)=>{for(let A=I,N=I+O;A<N;A++){Me(m,3*A,f,u),m.a.applyMatrix4(t),m.b.applyMatrix4(t),m.c.applyMatrix4(t),m.needsUpdate=!0;for(let B=C,D=C+P;B<D;B++){Me(p,3*B,l,c),p.needsUpdate=!0;const L=p.distanceToTriangle(m,x,g);if(L<b&&(T.copy(x),v&&v.copy(g),b=L,_=B,w=A),L<s)return!0}}}});{const E=Un(e);for(let I=0,O=E;I<O;I++){Me(m,3*I,f,u),m.a.applyMatrix4(t),m.b.applyMatrix4(t),m.c.applyMatrix4(t),m.needsUpdate=!0;for(let A=C,N=C+P;A<N;A++){Me(p,3*A,l,c),p.needsUpdate=!0;const B=p.distanceToTriangle(m,x,g);if(B<b&&(T.copy(x),v&&v.copy(g),b=B,_=A,w=I),B<s)return!0}}}}}),dt.releasePrimitive(p),dt.releasePrimitive(m),b===1/0?null:(n.point?n.point.copy(T):n.point=T.clone(),n.distance=b,n.faceIndex=_,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(fr),T.applyMatrix4(fr),i.distance=T.sub(i.point).length(),i.faceIndex=w),n)}function vf(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 p=0,m=u.length;p<m;p++)s=u[p],a=new Uint32Array(s),o=new Uint16Array(s),c=new Float32Array(s),f(0,l),l+=s.byteLength;function f(p,m,x=!1){const T=p*2;if(o[T+15]===Lr){const v=a[p+6],b=o[T+14];let _=1/0,w=1/0,C=1/0,P=-1/0,E=-1/0,I=-1/0;for(let O=v,A=v+b;O<A;O++){const N=3*r.resolveTriangleIndex(O);for(let B=0;B<3;B++){let D=N+B;D=n?n[D]:D;const L=i.getX(D),J=i.getY(D),W=i.getZ(D);L<_&&(_=L),L>P&&(P=L),J<w&&(w=J),J>E&&(E=J),W<C&&(C=W),W>I&&(I=W)}}return c[p+0]!==_||c[p+1]!==w||c[p+2]!==C||c[p+3]!==P||c[p+4]!==E||c[p+5]!==I?(c[p+0]=_,c[p+1]=w,c[p+2]=C,c[p+3]=P,c[p+4]=E,c[p+5]=I,!0):!1}else{const v=p+8,b=a[p+6],_=v+m,w=b+m;let C=x,P=!1,E=!1;e?C||(P=e.has(_),E=e.has(w),C=!P&&!E):(P=!0,E=!0);const I=C||P,O=C||E;let A=!1;I&&(A=f(v,m,C));let N=!1;O&&(N=f(b,m,C));const B=A||N;if(B)for(let D=0;D<3;D++){const L=v+D,J=b+D,W=c[L],Y=c[L+3],G=c[J],se=c[J+3];c[p+D]=W<G?W:G,c[p+D+3]=Y>se?Y:se}return B}}}function Sf(r,e,t,n,i,s,a){fe.setBuffer(r._roots[e]),Ks(0,r,t,n,i,s,a),fe.clearBuffer()}function Ks(r,e,t,n,i,s,a){const{float32Array:o,uint16Array:c,uint32Array:l}=fe,u=r*2;if(Ke(u,c)){const p=rt(r,l),m=ut(u,c);of(e,t,n,p,m,i,s,a)}else{const p=ht(r);Qt(p,o,n,s,a)&&Ks(p,e,t,n,i,s,a);const m=ft(r,l);Qt(m,o,n,s,a)&&Ks(m,e,t,n,i,s,a)}}const xf=["x","y","z"];function _f(r,e,t,n,i,s){fe.setBuffer(r._roots[e]);const a=Qs(0,r,t,n,i,s);return fe.clearBuffer(),a}function Qs(r,e,t,n,i,s){const{float32Array:a,uint16Array:o,uint32Array:c}=fe;let l=r*2;if(Ke(l,o)){const f=rt(r,c),p=ut(l,o);return af(e,t,n,f,p,i,s)}else{const f=jc(r,c),p=xf[f],x=n.direction[p]>=0;let T,g;x?(T=ht(r),g=ft(r,c)):(T=ft(r,c),g=ht(r));const b=Qt(T,a,n,i,s)?Qs(T,e,t,n,i,s):null;if(b){const C=b.point[p];if(x?C<=a[g+f]:C>=a[g+f+3])return b}const w=Qt(g,a,n,i,s)?Qs(g,e,t,n,i,s):null;return b&&w?b.distance<=w.distance?b:w:b||w||null}}const dr=new R.Box3,wn=new pt,Pn=new pt,qn=new R.Matrix4,ka=new Le,pr=new Le;function bf(r,e,t,n){fe.setBuffer(r._roots[e]);const i=eo(0,r,t,n);return fe.clearBuffer(),i}function eo(r,e,t,n,i=null){const{float32Array:s,uint16Array:a,uint32Array:o}=fe;let c=r*2;if(i===null&&(t.boundingBox||t.computeBoundingBox(),ka.set(t.boundingBox.min,t.boundingBox.max,n),i=ka),Ke(c,a)){const u=e.geometry,f=u.index,p=u.attributes.position,m=t.index,x=t.attributes.position,T=rt(r,o),g=ut(c,a);if(qn.copy(n).invert(),t.boundsTree)return ve(r,s,pr),pr.matrix.copy(qn),pr.needsUpdate=!0,t.boundsTree.shapecast({intersectsBounds:b=>pr.intersectsBox(b),intersectsTriangle:b=>{b.a.applyMatrix4(n),b.b.applyMatrix4(n),b.c.applyMatrix4(n),b.needsUpdate=!0;for(let _=T,w=g+T;_<w;_++)if(Me(Pn,3*e.resolveTriangleIndex(_),f,p),Pn.needsUpdate=!0,b.intersectsTriangle(Pn))return!0;return!1}});for(let v=T,b=g+T;v<b;v++){const _=e.resolveTriangleIndex(v);Me(wn,3*_,f,p),wn.a.applyMatrix4(qn),wn.b.applyMatrix4(qn),wn.c.applyMatrix4(qn),wn.needsUpdate=!0;for(let w=0,C=m.count;w<C;w+=3)if(Me(Pn,w,m,x),Pn.needsUpdate=!0,wn.intersectsTriangle(Pn))return!0}}else{const u=r+8,f=o[r+6];return ve(u,s,dr),!!(i.intersectsBox(dr)&&eo(u,e,t,n,i)||(ve(f,s,dr),i.intersectsBox(dr)&&eo(f,e,t,n,i)))}}const mr=new R.Matrix4,Ps=new Le,Xn=new Le,Tf=new R.Vector3,Mf=new R.Vector3,Cf=new R.Vector3,wf=new R.Vector3;function Pf(r,e,t,n={},i={},s=0,a=1/0){e.boundingBox||e.computeBoundingBox(),Ps.set(e.boundingBox.min,e.boundingBox.max,t),Ps.needsUpdate=!0;const o=r.geometry,c=o.attributes.position,l=o.index,u=e.attributes.position,f=e.index,p=dt.getPrimitive(),m=dt.getPrimitive();let x=Tf,T=Mf,g=null,v=null;i&&(g=Cf,v=wf);let b=1/0,_=null,w=null;return mr.copy(t).invert(),Xn.matrix.copy(mr),r.shapecast({boundsTraverseOrder:C=>Ps.distanceToBox(C),intersectsBounds:(C,P,E)=>E<b&&E<a?(P&&(Xn.min.copy(C.min),Xn.max.copy(C.max),Xn.needsUpdate=!0),!0):!1,intersectsRange:(C,P)=>{if(e.boundsTree){const E=e.boundsTree;return E.shapecast({boundsTraverseOrder:I=>Xn.distanceToBox(I),intersectsBounds:(I,O,A)=>A<b&&A<a,intersectsRange:(I,O)=>{for(let A=I,N=I+O;A<N;A++){const B=E.resolveTriangleIndex(A);Me(m,3*B,f,u),m.a.applyMatrix4(t),m.b.applyMatrix4(t),m.c.applyMatrix4(t),m.needsUpdate=!0;for(let D=C,L=C+P;D<L;D++){const J=r.resolveTriangleIndex(D);Me(p,3*J,l,c),p.needsUpdate=!0;const W=p.distanceToTriangle(m,x,g);if(W<b&&(T.copy(x),v&&v.copy(g),b=W,_=D,w=A),W<s)return!0}}}})}else{const E=Un(e);for(let I=0,O=E;I<O;I++){Me(m,3*I,f,u),m.a.applyMatrix4(t),m.b.applyMatrix4(t),m.c.applyMatrix4(t),m.needsUpdate=!0;for(let A=C,N=C+P;A<N;A++){const B=r.resolveTriangleIndex(A);Me(p,3*B,l,c),p.needsUpdate=!0;const D=p.distanceToTriangle(m,x,g);if(D<b&&(T.copy(x),v&&v.copy(g),b=D,_=A,w=I),D<s)return!0}}}}}),dt.releasePrimitive(p),dt.releasePrimitive(m),b===1/0?null:(n.point?n.point.copy(T):n.point=T.clone(),n.distance=b,n.faceIndex=_,i&&(i.point?i.point.copy(v):i.point=v.clone(),i.point.applyMatrix4(mr),T.applyMatrix4(mr),i.distance=T.sub(i.point).length(),i.faceIndex=w),n)}function Ef(){return typeof SharedArrayBuffer<"u"}const ri=new fe.constructor,Br=new fe.constructor,Yt=new fo(()=>new R.Box3),En=new R.Box3,kn=new R.Box3,Es=new R.Box3,ks=new R.Box3;let Rs=!1;function kf(r,e,t,n){if(Rs)throw new Error("MeshBVH: Recursive calls to bvhcast not supported.");Rs=!0;const i=r._roots,s=e._roots;let a,o=0,c=0;const l=new R.Matrix4().copy(t).invert();for(let u=0,f=i.length;u<f;u++){ri.setBuffer(i[u]),c=0;const p=Yt.getPrimitive();ve(0,ri.float32Array,p),p.applyMatrix4(l);for(let m=0,x=s.length;m<x&&(Br.setBuffer(s[m]),a=Tt(0,0,t,l,n,o,c,0,0,p),Br.clearBuffer(),c+=s[m].length,!a);m++);if(Yt.releasePrimitive(p),ri.clearBuffer(),o+=i[u].length,a)break}return Rs=!1,a}function Tt(r,e,t,n,i,s=0,a=0,o=0,c=0,l=null,u=!1){let f,p;u?(f=Br,p=ri):(f=ri,p=Br);const m=f.float32Array,x=f.uint32Array,T=f.uint16Array,g=p.float32Array,v=p.uint32Array,b=p.uint16Array,_=r*2,w=e*2,C=Ke(_,T),P=Ke(w,b);let E=!1;if(P&&C)u?E=i(rt(e,v),ut(e*2,b),rt(r,x),ut(r*2,T),c,a+e,o,s+r):E=i(rt(r,x),ut(r*2,T),rt(e,v),ut(e*2,b),o,s+r,c,a+e);else if(P){const I=Yt.getPrimitive();ve(e,g,I),I.applyMatrix4(t);const O=ht(r),A=ft(r,x);ve(O,m,En),ve(A,m,kn);const N=I.intersectsBox(En),B=I.intersectsBox(kn);E=N&&Tt(e,O,n,t,i,a,s,c,o+1,I,!u)||B&&Tt(e,A,n,t,i,a,s,c,o+1,I,!u),Yt.releasePrimitive(I)}else{const I=ht(e),O=ft(e,v);ve(I,g,Es),ve(O,g,ks);const A=l.intersectsBox(Es),N=l.intersectsBox(ks);if(A&&N)E=Tt(r,I,t,n,i,s,a,o,c+1,l,u)||Tt(r,O,t,n,i,s,a,o,c+1,l,u);else if(A)if(C)E=Tt(r,I,t,n,i,s,a,o,c+1,l,u);else{const B=Yt.getPrimitive();B.copy(Es).applyMatrix4(t);const D=ht(r),L=ft(r,x);ve(D,m,En),ve(L,m,kn);const J=B.intersectsBox(En),W=B.intersectsBox(kn);E=J&&Tt(I,D,n,t,i,a,s,c,o+1,B,!u)||W&&Tt(I,L,n,t,i,a,s,c,o+1,B,!u),Yt.releasePrimitive(B)}else if(N)if(C)E=Tt(r,O,t,n,i,s,a,o,c+1,l,u);else{const B=Yt.getPrimitive();B.copy(ks).applyMatrix4(t);const D=ht(r),L=ft(r,x);ve(D,m,En),ve(L,m,kn);const J=B.intersectsBox(En),W=B.intersectsBox(kn);E=J&&Tt(O,D,n,t,i,a,s,c,o+1,B,!u)||W&&Tt(O,L,n,t,i,a,s,c,o+1,B,!u),Yt.releasePrimitive(B)}}return E}const yr=new Le,Ra=new R.Box3,Rf={strategy:uo,maxDepth:40,maxLeafTris:10,useSharedArrayBuffer:!1,setBoundingBox:!0,onProgress:null,indirect:!1,verbose:!0,range:null};class Vi{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 Vi(t,{...n,[_s]:!0});if(o._roots=s,o._indirectBuffer=a||null,n.setIndex){const c=t.getIndex();if(c===null){const l=new R.BufferAttribute(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({...Rf,[_s]:!1},t),t.useSharedArrayBuffer&&!Ef())throw new Error("MeshBVH: SharedArrayBuffer is not available.");this.geometry=e,this._roots=null,this._indirectBuffer=null,t[_s]||(Gh(this,t),!e.boundingBox&&t.setBoundingBox&&(e.boundingBox=this.getBoundingBox(new R.Box3))),this.resolveTriangleIndex=t.indirect?n=>this._indirectBuffer[n]:n=>n}refit(e=null){return(this.indirect?vf:sf)(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]===Lr;if(u){const f=i[o+6],p=s[l+14];e(c,u,new Float32Array(n,o*4,6),f,p)}else{const f=o+ii/4,p=i[o+6],m=i[o+7];e(c,u,new Float32Array(n,o*4,6),m)||(a(f,c+1),a(p,c+1))}}}raycast(e,t=R.FrontSide,n=0,i=1/0){const s=this._roots,a=this.geometry,o=[],c=t.isMaterial,l=Array.isArray(t),u=a.groups,f=c?t.side:t,p=this.indirect?Sf:lf;for(let m=0,x=s.length;m<x;m++){const T=l?t[u[m].materialIndex].side:f,g=o.length;if(p(this,m,T,e,o,n,i),l){const v=u[m].materialIndex;for(let b=g,_=o.length;b<_;b++)o[b].face.materialIndex=v}}return o}raycastFirst(e,t=R.FrontSide,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,f=o?t.side:t,p=this.indirect?_f:hf;for(let m=0,x=s.length;m<x;m++){const T=c?t[u[m].materialIndex].side:f,g=p(this,m,T,e,n,i);g!=null&&(l==null||g.distance<l.distance)&&(l=g,c&&(g.face.materialIndex=u[m].materialIndex))}return l}intersectsGeometry(e,t){let n=!1;const i=this._roots,s=this.indirect?bf:ff;for(let a=0,o=i.length;a<o&&(n=s(this,a,e,t),!n);a++);return n}shapecast(e){const t=dt.getPrimitive(),n=this.indirect?cf:rf;let{boundsTraverseOrder:i,intersectsBounds:s,intersectsRange:a,intersectsTriangle:o}=e;if(a&&o){const f=a;a=(p,m,x,T,g)=>f(p,m,x,T,g)?!0:n(p,m,this,o,x,T,t)}else a||(o?a=(f,p,m,x)=>n(f,p,this,o,m,x,t):a=(f,p,m)=>m);let c=!1,l=0;const u=this._roots;for(let f=0,p=u.length;f<p;f++){const m=u[f];if(c=Yh(this,f,s,a,i,l),c)break;l+=m.byteLength}return dt.releasePrimitive(t),c}bvhcast(e,t,n){let{intersectsRanges:i,intersectsTriangles:s}=n;const a=dt.getPrimitive(),o=this.geometry.index,c=this.geometry.attributes.position,l=this.indirect?x=>{const T=this.resolveTriangleIndex(x);Me(a,T*3,o,c)}:x=>{Me(a,x*3,o,c)},u=dt.getPrimitive(),f=e.geometry.index,p=e.geometry.attributes.position,m=e.indirect?x=>{const T=e.resolveTriangleIndex(x);Me(u,T*3,f,p)}:x=>{Me(u,x*3,f,p)};if(s){const x=(T,g,v,b,_,w,C,P)=>{for(let E=v,I=v+b;E<I;E++){m(E),u.a.applyMatrix4(t),u.b.applyMatrix4(t),u.c.applyMatrix4(t),u.needsUpdate=!0;for(let O=T,A=T+g;O<A;O++)if(l(O),a.needsUpdate=!0,s(a,u,O,E,_,w,C,P))return!0}return!1};if(i){const T=i;i=function(g,v,b,_,w,C,P,E){return T(g,v,b,_,w,C,P,E)?!0:x(g,v,b,_,w,C,P,E)}}else i=x}return kf(this,e,t,i)}intersectsBox(e,t){return yr.set(e.min,e.max,t),yr.needsUpdate=!0,this.shapecast({intersectsBounds:n=>yr.intersectsBox(n),intersectsTriangle:n=>yr.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?Pf:gf)(this,e,t,n,i,s,a)}closestPointToPoint(e,t={},n=0,i=1/0){return Zh(this,e,t,n,i)}getBoundingBox(e){return e.makeEmpty(),this._roots.forEach(n=>{ve(0,new Float32Array(n),Ra),e.union(Ra)}),e}}function Aa(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 gr=new R.Ray,Oa=new R.Vector3,za=new R.Matrix4,Af=R.Mesh.prototype.raycast,Of=R.BatchedMesh.prototype.raycast,Ia=new R.Vector3,Ie=new R.Mesh,vr=[];function zf(r,e){this.isBatchedMesh?If.call(this,r,e):Bf.call(this,r,e)}function If(r,e){if(this.boundsTrees){const t=this.boundsTrees,n=this._drawInfo||this._instanceInfo,i=this._drawRanges||this._geometryInfo,s=this.matrixWorld;Ie.material=this.material,Ie.geometry=this.geometry;const a=Ie.geometry.boundsTree,o=Ie.geometry.drawRange;Ie.geometry.boundingSphere===null&&(Ie.geometry.boundingSphere=new R.Sphere);for(let c=0,l=n.length;c<l;c++){if(!this.getVisibleAt(c))continue;const u=n[c].geometryIndex;if(Ie.geometry.boundsTree=t[u],this.getMatrixAt(c,Ie.matrixWorld).premultiply(s),!Ie.geometry.boundsTree){this.getBoundingBoxAt(u,Ie.geometry.boundingBox),this.getBoundingSphereAt(u,Ie.geometry.boundingSphere);const f=i[u];Ie.geometry.setDrawRange(f.start,f.count)}Ie.raycast(r,vr);for(let f=0,p=vr.length;f<p;f++){const m=vr[f];m.object=this,m.batchId=c,e.push(m)}vr.length=0}Ie.geometry.boundsTree=a,Ie.geometry.drawRange=o,Ie.material=null,Ie.geometry=null}else Of.call(this,r,e)}function Bf(r,e){if(this.geometry.boundsTree){if(this.material===void 0)return;za.copy(this.matrixWorld).invert(),gr.copy(r.ray).applyMatrix4(za),Ia.setFromMatrixScale(this.matrixWorld),Oa.copy(gr.direction).multiply(Ia);const t=Oa.length(),n=r.near/t,i=r.far/t,s=this.geometry.boundsTree;if(r.firstHitOnly===!0){const a=Aa(s.raycastFirst(gr,this.material,n,i),this,r);a&&e.push(a)}else{const a=s.raycast(gr,this.material,n,i);for(let o=0,c=a.length;o<c;o++){const l=Aa(a[o],this,r);l&&e.push(l)}}}else Af.call(this,r,e)}function Nf(r={}){return this.boundsTree=new Vi(this,r),this.boundsTree}const cn=new R.Vector3,ln=new R.Vector3,un=new R.Vector3,Ba=new R.Vector4,Sr=new R.Vector3,As=new R.Vector3,Na=new R.Vector4,Ua=new R.Vector4,xr=new R.Matrix4,Da=new R.Matrix4;function Yn(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 ti(r,e=null){const t=r.array.constructor,n=r.normalized,i=r.itemSize,s=e===null?r.count:e;return new R.BufferAttribute(new t(i*s),i,n)}function Wc(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 Uf(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 Fa(r,e,t){const n=r.skeleton,i=r.geometry,s=n.bones,a=n.boneInverses;Na.fromBufferAttribute(i.attributes.skinIndex,e),Ua.fromBufferAttribute(i.attributes.skinWeight,e),xr.elements.fill(0);for(let o=0;o<4;o++){const c=Ua.getComponent(o);if(c!==0){const l=Na.getComponent(o);Da.multiplyMatrices(s[l].matrixWorld,a[l]),Uf(xr,Da,c)}}return xr.multiply(r.bindMatrix).premultiply(r.bindMatrixInverse),t.transformDirection(xr),t}function Os(r,e,t,n,i){Sr.set(0,0,0);for(let s=0,a=r.length;s<a;s++){const o=e[s],c=r[s];o!==0&&(As.fromBufferAttribute(c,n),t?Sr.addScaledVector(As,o):Sr.addScaledVector(As.sub(i),o))}i.add(Sr)}function Df(r,e={useGroups:!1,updateIndex:!1,skipAttributes:[]},t=new R.BufferGeometry){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 f=r[u];let p=0;if(n!==(f.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 m in f.attributes){if(!o.has(m))throw new Error('StaticGeometryGenerator: All geometries must have compatible attributes; make sure "'+m+'" attribute exists among all geometries, or in none of them.');c[m]===void 0&&(c[m]=[]),c[m].push(f.attributes[m]),p++}if(p!==o.size)throw new Error("StaticGeometryGenerator: Make sure all geometries have the same number of attributes.");if(i){let m;if(n)m=f.index.count;else if(f.attributes.position!==void 0)m=f.attributes.position.count;else throw new Error("StaticGeometryGenerator: The geometry must have either an index or a position attribute");t.addGroup(l,m,u),l+=m}}if(n){let u=!1;if(!t.index){let f=0;for(let p=0;p<r.length;++p)f+=r[p].index.count;t.setIndex(new R.BufferAttribute(new Uint32Array(f),1,!1)),u=!0}if(s||u){const f=t.index;let p=0,m=0;for(let x=0;x<r.length;++x){const T=r[x],g=T.index;if(a[x]!==!0)for(let v=0;v<g.count;++v)f.setX(p,g.getX(v)+m),p++;m+=T.attributes.position.count}}}for(const u in c){const f=c[u];if(!(u in t.attributes)){let x=0;for(const T in f)x+=f[T].count;t.setAttribute(u,ti(c[u][0],x))}const p=t.attributes[u];let m=0;for(let x=0,T=f.length;x<T;x++){const g=f[x];a[x]!==!0&&Wc(g,p,m),m+=g.count}}return t}function Ff(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 Lf(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 Vf{constructor(e){this.matrixWorld=new R.Matrix4,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&&Ff(e.skeleton&&e.skeleton.boneMatrices||null,this.boneMatrices)&&this.primitiveCount===n)}}class Jf{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 R.BufferGeometry),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 R.BufferGeometry){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],f=a.get(l);!f||f.didChange(l)?(this._convertToStaticGeometry(l,u),t.push(!1),f?f.update():a.set(l,new Vf(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 R.BufferAttribute(new Float32Array(0),4,!1))}else Df(s,{useGroups:i,skipAttributes:t},e);for(const o in e.attributes)e.attributes[o].needsUpdate=!0;return e}_convertToStaticGeometry(e,t=new R.BufferGeometry){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",ti(o.position)),s&&!c.normal&&o.normal&&t.setAttribute("normal",ti(o.normal)),a&&!c.tangent&&o.tangent&&t.setAttribute("tangent",ti(o.tangent)),Yn(n.index,t.index),Yn(o.position,c.position),s&&Yn(o.normal,c.normal),a&&Yn(o.tangent,c.tangent);const l=o.position,u=s?o.normal:null,f=a?o.tangent:null,p=n.morphAttributes.position,m=n.morphAttributes.normal,x=n.morphAttributes.tangent,T=n.morphTargetsRelative,g=e.morphTargetInfluences,v=new R.Matrix3;v.getNormalMatrix(e.matrixWorld),n.index&&t.index.array.set(n.index.array);for(let b=0,_=o.position.count;b<_;b++)cn.fromBufferAttribute(l,b),u&&ln.fromBufferAttribute(u,b),f&&(Ba.fromBufferAttribute(f,b),un.fromBufferAttribute(f,b)),g&&(p&&Os(p,g,T,b,cn),m&&Os(m,g,T,b,ln),x&&Os(x,g,T,b,un)),e.isSkinnedMesh&&(e.applyBoneTransform(b,cn),u&&Fa(e,b,ln),f&&Fa(e,b,un)),i&&cn.applyMatrix4(e.matrixWorld),c.position.setXYZ(b,cn.x,cn.y,cn.z),u&&(i&&ln.applyNormalMatrix(v),c.normal.setXYZ(b,ln.x,ln.y,ln.z)),f&&(i&&un.transformDirection(e.matrixWorld),c.tangent.setXYZW(b,un.x,un.y,un.z,Ba.w));for(const b in this.attributes){const _=this.attributes[b];_==="position"||_==="tangent"||_==="normal"||!(_ in o)||(c[_]||t.setAttribute(_,ti(o[_])),Yn(o[_],c[_]),Wc(o[_],c[_]))}return e.matrixWorld.determinant()<0&&Lf(t),t}}const jf=Object.freeze(Object.defineProperty({__proto__:null,AVERAGE:Fc,CENTER:uo,CONTAINED:$s,ExtendedTriangle:pt,MeshBVH:Vi,OrientedBox:Le,SAH:Lc,StaticGeometryGenerator:Jf,acceleratedRaycast:zf,computeBoundsTree:Nf},Symbol.toStringTag,{value:"Module"}));class Gf{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 lt={node:"node",material:"material",camera:"camera",light:"light"},hn="KHR_animation_pointer",$f={CUBICSPLINE:void 0,LINEAR:R.InterpolateLinear,STEP:R.InterpolateDiscrete};class Wf{constructor(e){this.name=hn,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){qf();const t=e.target,n=t.extensions&&t.extensions[hn]&&t.path&&t.path==="pointer";if(!n)return null;let i,s=lt.node,a;if(n){const c=t.extensions[hn];let l=c.pointer;if(!l){console.warn("Invalid path",c,t);return}if(l.startsWith("/materials/")?s=lt.material:l.startsWith("/extensions/KHR_lights_punctual/lights/")?s=lt.light:l.startsWith("/cameras/")&&(s=lt.camera),a=this._tryResolveTargetId(l,s),a===null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,l);return}switch(s){case lt.material:const u=("/materials/"+a.toString()+"/").length,f=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=f+i;break;case lt.node:const p=("/nodes/"+a.toString()+"/").length,m=l.substring(0,p);switch(i=l.substring(p),i){case"translation":i="position";break;case"rotation":i="quaternion";break;case"scale":i="scale";break;case"weights":i="morphTargetInfluences";break}l=m+i;break;case lt.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 lt.camera:const T=("/cameras/"+a.toString()+"/").length,g=l.substring(0,T);switch(i=l.substring(T),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[hn].pointer=l}if(a==null||isNaN(a)){console.warn("Failed resolving animation node id: "+a,t);return}let o;return s===lt.node?o=this.parser.getDependency("node",a):s===lt.material?o=this.parser.getDependency("material",a):s===lt.light?o=this.parser.getDependency("light",a):s===lt.camera?o=this.parser.getDependency("camera",a):console.error("Unhandled type",s),o}createAnimationTracksWithAnimationPointer(e,t,n,i,s){if(!(s.extensions&&s.extensions[hn]&&s.path&&s.path==="pointer"))return null;let o=s.extensions[hn].pointer;if(!o)return null;const c=[];o=o.replaceAll("/",".");const l=o.split(".");var f=e.name!==void 0&&e.name!==null?e.name:e.uuid;if(l[2]=f,l[3]==="morphTargetInfluences"&&e.type==="Group"){for(const m of e.children)m instanceof R.SkinnedMesh&&m.morphTargetInfluences&&(l[3]=m.name,l[4]="morphTargetInfluences",p(this.parser));return c}p(this.parser);function p(m){o=l.join(".");let x;switch(n.itemSize){case 1:x=R.NumberKeyframeTrack;break;case 2:case 3:x=R.VectorKeyframeTrack;break;case 4:o.endsWith(".quaternion")?x=R.QuaternionKeyframeTrack:x=R.ColorKeyframeTrack;break}if(!x){console.warn("Unsupported output accessor format",n);return}const T=i.interpolation!==void 0?$f[i.interpolation]:R.InterpolateLinear;let g=m._getArrayFromAccessor(n);o.endsWith(".fov")&&(g=g.map(b=>b/Math.PI*180));const v=new x(o,t.array,g,T);if(T==="CUBICSPLINE"&&m._createCubicSplineTrackInterpolant(v),c.push(v),o&&n.itemSize===4&&o.startsWith(".materials.")&&o.endsWith(".color")){const b=new Float32Array(g.length/4);for(let w=0,C=g.length/4;w<C;w+=1)b[w]=g[w*4+3];const _=new x(o.replace(".color",".opacity"),t.array,b,T);T==="CUBICSPLINE"&&m._createCubicSplineTrackInterpolant(v),c.push(_)}}return c}_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=[],f=[];for(let p=0,m=s.channels.length;p<m;p++){const x=s.channels[p],T=s.samplers[x.sampler],g=x.target,v=s.parameters!==void 0?s.parameters[T.input]:T.input,b=s.parameters!==void 0?s.parameters[T.output]:T.output;let _=t.loadAnimationTargetFromChannelWithAnimationPointer(x);_||(_=t.loadAnimationTargetFromChannel(x)),o.push(_),c.push(i.getDependency("accessor",v)),l.push(i.getDependency("accessor",b)),u.push(T),f.push(g)}return Promise.all([Promise.all(o),Promise.all(c),Promise.all(l),Promise.all(u),Promise.all(f)]).then(function(p){const m=p[0],x=p[1],T=p[2],g=p[3],v=p[4],b=[];for(let _=0,w=m.length;_<w;_++){const C=m[_],P=x[_],E=T[_],I=g[_],O=v[_];if(C===void 0)continue;C.updateMatrix&&(C.updateMatrix(),C.matrixAutoUpdate=!0);let A=t.createAnimationTracksWithAnimationPointer(C,P,E,I,O);if(A||(A=i._createAnimationTracks(C,P,E,I,O)),A)for(let N=0;N<A.length;N++)b.push(A[N])}return new R.AnimationClip(a,void 0,b)})}}let La=!1,Hf=null;function qf(){if(La)return;La=!0;const r=Hf||=R.PropertyBinding.findNode;R.PropertyBinding.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 c=Number.parseInt(a);let l=a;c>=0&&(l=c),i=i[l]}else{const c=e.getObjectByName(a);c&&(i=c)}}if(!i){const s=r(e,n[2]);return s||console.warn(hn+": Property binding not found",t,e,e.name,n),s}return i}return r(e,t)}}const Xf=Object.freeze(Object.defineProperty({__proto__:null,GLTFAnimationPointerExtension:Wf},Symbol.toStringTag,{value:"Module"}));exports.$70d766613f57b014$export$2e2bcd8739ae039=kc;exports.BatchedParticleRenderer=xh;exports.Builder=to;exports.ByteBuffer=si;exports.ConstantColor=pn;exports.ConstantValue=ee;exports.Matrix4=Ct;exports.MeshBVH=Vi;exports.MotionController=gl;exports.ParticleSystem=Ir;exports.SIZE_PREFIX_LENGTH=Ja;exports.TrailParticle=Or;exports.Vector4=Qe;exports.WorkerBase=Gf;exports.bundler=Xl;exports.createNoise4D=bh;exports.fetchProfile=fl;exports.index=Eh;exports.index$1=jf;exports.index$2=Xf;exports.md5=hu;exports.v5=ou;
|