playcanvas
Version:
PlayCanvas WebGL game engine
9 lines • 2.37 MB
JavaScript
/**
* @license
* PlayCanvas Engine v2.14.4 revision a8e9f39 (RELEASE)
* Copyright 2011-2025 PlayCanvas Ltd. All rights reserved.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var e,t;function n(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):e instanceof t}e=this,t=function(e){var t,i,r,s,a,o,l,u,c,h,f,d,p,m,_,v,g,y,S,x,b,T,E,w,A,C,P,I,D,L,M,R,O,k,F,N,B,U,z,V="undefined"!=typeof document?document.currentScript:null;function G(e,t,n){e.prototype[t]||Object.defineProperty(e.prototype,t,{value:n,configurable:true,enumerable:false,writable:true});}if(G(Array,"fill",function(e){if(this==null)throw TypeError("this is null or not defined");for(var t=Object(this),n=t.length>>>0,i=arguments[1],r=0|i,s=r<0?Math.max(n+r,0):Math.min(r,n),a=arguments[2],o=void 0===a?n:0|a,l=o<0?Math.max(n+o,0):Math.min(o,n);s<l;)t[s]=e,s++;return t}),G(Array,"find",function(e){if(this==null)throw TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw TypeError("predicate must be a function");for(var i=arguments[1],r=0;r<n;){var s=t[r];if(e.call(i,s,r,t))return s;r++;}}),G(Array,"findIndex",function(e){if(this==null)throw TypeError('"this" is null or not defined');var t=Object(this),n=t.length>>>0;if("function"!=typeof e)throw TypeError("predicate must be a function");for(var i=arguments[1],r=0;r<n;){var s=t[r];if(e.call(i,s,r,t))return r;r++;}return -1}),Math.log2=Math.log2||function(e){return Math.log(e)*Math.LOG2E},Math.sign||(Math.sign=function(e){return (e>0)-(e<0)||+e}),void 0===Number.isFinite&&(Number.isFinite=function(e){return "number"==typeof e&&isFinite(e)}),"function"!=typeof Object.assign&&Object.defineProperty(Object,"assign",{value:function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");for(var n=Object(e),i=1;i<arguments.length;i++){var r=arguments[i];if(null!=r)for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(n[s]=r[s]);}return n},writable:true,configurable:true}),Object.fromEntries=Object.fromEntries||function(e){if(!e||!e[Symbol.iterator])throw Error("Object.fromEntries() requires a single iterable argument");for(var t={},n=0;n<e.length;n++)t[e[n][0]]=e[n][1];return t},Object.entries=Object.entries||function(e){for(var t=Object.keys(e),n=t.length,i=Array(n);n--;)i[n]=[t[n],e[t[n]]];return i},Object.values=Object.values||function(e){return Object.keys(e).map(function(t){return e[t]})},"undefined"!=typeof navigator&&"undefined"!=typeof document){navigator.pointer=navigator.pointer||navigator.webkitPointer||navigator.mozPointer;var H=function(){var e=document.createEvent("CustomEvent");e.initCustomEvent("pointerlockchange",true,false,null),document.dispatchEvent(e);},W=function(){var e=document.createEvent("CustomEvent");e.initCustomEvent("pointerlockerror",true,false,null),document.dispatchEvent(e);};document.addEventListener("webkitpointerlockchange",H,false),document.addEventListener("webkitpointerlocklost",H,false),document.addEventListener("mozpointerlockchange",H,false),document.addEventListener("mozpointerlocklost",H,false),document.addEventListener("webkitpointerlockerror",W,false),document.addEventListener("mozpointerlockerror",W,false),Element.prototype.mozRequestPointerLock?Element.prototype.requestPointerLock=function(){this.mozRequestPointerLock();}:Element.prototype.requestPointerLock=Element.prototype.requestPointerLock||Element.prototype.webkitRequestPointerLock||Element.prototype.mozRequestPointerLock,!Element.prototype.requestPointerLock&&navigator.pointer&&(Element.prototype.requestPointerLock=function(){document.pointerLockElement=this,navigator.pointer.lock(this,H,W);}),document.exitPointerLock=document.exitPointerLock||document.webkitExitPointerLock||document.mozExitPointerLock,document.exitPointerLock||(document.exitPointerLock=function(){navigator.pointer&&(document.pointerLockElement=null,navigator.pointer.unlock());});}function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}G(String,"endsWith",function(e,t){return (void 0===t||t>this.length)&&(t=this.length),this.substring(t-e.length,t)===e}),G(String,"includes",function(e,t){return "number"!=typeof t&&(t=0),!(t+e.length>this.length)&&-1!==this.indexOf(e,t)}),G(String,"startsWith",function(e,t){var n=t>0?0|t:0;return this.substring(n,n+e.length)===e}),G(String,"trimEnd",function(){return this.replace(RegExp(/[\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF]+/.source+"$","g"),"")});for(var X,Y=[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array],q=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return (n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return j(e,void 0);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return j(e,void 0)}}(e))){n&&(e=n);var i=0;return function(){return i>=e.length?{done:true}:{done:false,value:e[i++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(Y);!(X=q()).done;){var K=X.value;G(K,"fill",Array.prototype.fill),G(K,"join",Array.prototype.join);}var Z="GpuTimings",Q="2.14.4",J="a8e9f39";function $(e,t){for(var n in t){var i=t[n];Array.isArray(i)?e[n]=$([],i):i&&"object"==typeof i?e[n]=$({},i):e[n]=i;}return e}var ee={create:function(){return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(e){var t=16*Math.random()|0;return ("x"===e?t:3&t|8).toString(16)})}},et={delimiter:"/",join:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];for(var i=t[0],r=0;r<t.length-1;r++){var s=t[r],a=t[r+1];if(a[0]===et.delimiter){i=a;continue}s&&a&&s[s.length-1]!==et.delimiter&&a[0]!==et.delimiter?i+=et.delimiter+a:i+=a;}return i},normalize:function(e){for(var t=e.startsWith(et.delimiter),n=e.endsWith(et.delimiter),i=e.split("/"),r="",s=[],a=0;a<i.length;a++)if(""!==i[a]&&"."!==i[a]){if(".."===i[a]&&s.length>0){s=s.slice(0,s.length-2);continue}a>0&&s.push(et.delimiter),s.push(i[a]);}return r=s.join(""),t||r[0]!==et.delimiter||(r=r.slice(1)),n&&r[r.length-1]!==et.delimiter&&(r+=et.delimiter),r},split:function(e){var t=e.lastIndexOf(et.delimiter);return -1!==t?[e.substring(0,t),e.substring(t+1)]:["",e]},getBasename:function(e){return et.split(e)[1]},getDirectory:function(e){return et.split(e)[0]},getExtension:function(e){var t=e.split("?")[0].split(".").pop();return t!==e?"."+t:""},isRelativePath:function(e){return "/"!==e.charAt(0)&&null===e.match(/:\/\//)},extractPath:function(e){var t="",n=e.split("/"),i=0;if(n.length>1)if(et.isRelativePath(e))if("."===n[0])for(i=0;i<n.length-1;++i)t+=0===i?n[i]:"/"+n[i];else if(".."===n[0])for(i=0;i<n.length-1;++i)t+=0===i?n[i]:"/"+n[i];else for(i=0,t=".";i<n.length-1;++i)t+="/"+n[i];else for(i=0;i<n.length-1;++i)t+=0===i?n[i]:"/"+n[i];return t}},en="undefined"!=typeof navigator?navigator.userAgent:"",ei="undefined"!=typeof window?"browser":"undefined"!=typeof global?"node":"worker",er=/android/i.test(en)?"android":/ip(?:[ao]d|hone)/i.test(en)?"ios":/windows/i.test(en)?"windows":/mac os/i.test(en)?"osx":/linux/i.test(en)?"linux":/cros/i.test(en)?"cros":null,es="browser"!==ei?null:/Chrome\/|Chromium\/|Edg.*\//.test(en)?"chrome":/Safari\//.test(en)?"safari":/Firefox\//.test(en)?"firefox":"other",ea=/xbox/i.test(en),eo="browser"===ei&&("ontouchstart"in window||"maxTouchPoints"in navigator&&navigator.maxTouchPoints>0),el="browser"===ei&&(!!navigator.getGamepads||!!navigator.webkitGetGamepads),eu="undefined"!=typeof Worker,ec=function(){var e=false;try{var t=Object.defineProperty({},"passive",{get:function(){return e=!0,!1}});window.addEventListener("testpassive",null,t),window.removeEventListener("testpassive",null,t);}catch(e){}return e}(),eh={name:er,environment:ei,global:null!=(l=null!=(o=null!=(a="undefined"!=typeof globalThis&&globalThis)?a:"browser"===ei&&window)?o:"node"===ei&&global)?l:"worker"===ei&&self,browser:"browser"===ei,worker:"worker"===ei,desktop:["windows","osx","linux","cros"].includes(er),mobile:["android","ios"].includes(er),ios:"ios"===er,android:"android"===er,xbox:ea,gamepads:el,touch:eo,workers:eu,passiveEvents:ec,browserName:es},ef="abcdefghijklmnopqrstuvwxyz",ed="ABCDEFGHIJKLMNOPQRSTUVWXYZ";function ep(e,t){ void 0===t&&(t=0);var n=e.length;if(t<0||t>=n)return null;var i=e.charCodeAt(t);if(n>1&&i>=55296&&i<=56319){var r=e.charCodeAt(t+1);if(r>=56320&&r<=57343)return {code:(i-55296)*1024+r-56320+65536,long:true}}return {code:i,long:false}}function em(e,t,n){if(!e)return false;var i=ep(e);if(i){var r=i.code;return r>=t&&r<=n}return false}var e_={ASCII_LOWERCASE:ef,ASCII_UPPERCASE:ed,ASCII_LETTERS:ef+ed,format:function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];for(var r=0;r<n.length;r++)e=e.replace("{"+r+"}",n[r]);return e},getCodePoint:function(e,t){var n=ep(e,t);return n&&n.code},getCodePoints:function(e){if("string"!=typeof e)throw TypeError("Not a string");for(var t,n=0,i=[];t=ep(e,n);)i.push(t.code),n+=t.long?2:1;return i},getSymbols:function(e){if("string"!=typeof e)throw TypeError("Not a string");for(var t,n=0,i=e.length,r=[],s=0;n<i;){if(s+=function(e,t){if(t===e.length-1)return 1;if(em(e[t],55296,56319)){var n=e.substring(t,t+2),i=e.substring(t+2,t+4);return em(i,127995,127999)||em(n,127462,127487)&&em(i,127462,127487)?4:em(i,65024,65039)?3:2}return em(e[t+1],65024,65039)?2:1}(e,n+s),em(t=e[n+s],8400,8447)&&(t=e[n+s++]),em(t,65024,65039)&&(t=e[n+s++]),t&&8205===t.charCodeAt(0)){t=e[n+s++];continue}var a=e.substring(n,n+s);r.push(a),n+=s,s=0;}return r},fromCodePoint:function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return t.map(function(e){return e>65535?String.fromCharCode(((e-=65536)>>10)+55296,e%1024+56320):String.fromCharCode(e)}).join("")}},ev=function(){function e(e,t,n,i,r){ void 0===r&&(r=false),this._removed=false,this.handler=e,this.name=t,this.callback=n,this.scope=i,this._once=r;}var t,n=e.prototype;return n.off=function(){this._removed||this.handler.offByHandle(this);},n.on=function(e,t,n){return void 0===n&&(n=this),this.handler._addCallback(e,t,n,false)},n.once=function(e,t,n){return void 0===n&&(n=this),this.handler._addCallback(e,t,n,true)},n.toJSON=function(e){},t=[{key:"removed",get:function(){return this._removed},set:function(e){e&&(this._removed=true);}}],function(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||false,i.configurable=true,"value"in i&&(i.writable=true),Object.defineProperty(e,i.key,i);}}(e.prototype,t),e}();function eg(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}function ey(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return (n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return eg(e,void 0);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return eg(e,void 0)}}(e))||t){n&&(e=n);var i=0;return function(){return i>=e.length?{done:true}:{done:false,value:e[i++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var eS=function(){function e(){this._callbacks=new Map,this._callbackActive=new Map;}var t=e.prototype;return t.initEventHandler=function(){this._callbacks=new Map,this._callbackActive=new Map;},t._addCallback=function(e,t,n,i){if(this._callbacks.has(e)||this._callbacks.set(e,[]),this._callbackActive.has(e)){var r=this._callbackActive.get(e);r&&r===this._callbacks.get(e)&&this._callbackActive.set(e,r.slice());}var s=new ev(this,e,t,n,i);return this._callbacks.get(e).push(s),s},t.on=function(e,t,n){return void 0===n&&(n=this),this._addCallback(e,t,n,false)},t.once=function(e,t,n){return void 0===n&&(n=this),this._addCallback(e,t,n,true)},t.off=function(e,t,n){if(e)this._callbackActive.has(e)&&this._callbackActive.get(e)===this._callbacks.get(e)&&this._callbackActive.set(e,this._callbackActive.get(e).slice());else for(var i,r=ey(this._callbackActive);!(i=r()).done;){var s=i.value,a=s[0],o=s[1];this._callbacks.has(a)&&this._callbacks.get(a)===o&&this._callbackActive.set(a,o.slice());}if(e)if(t){var l=this._callbacks.get(e);if(!l)return this;for(var u=0;u<l.length;u++)l[u].callback===t&&(!n||l[u].scope===n)&&(l[u].removed=true,l.splice(u,1),u--);0===l.length&&this._callbacks.delete(e);}else {var c=this._callbacks.get(e);if(c){for(var h=0;h<c.length;h++)c[h].removed=true;this._callbacks.delete(e);}}else {for(var f,d=ey(this._callbacks.values());!(f=d()).done;)for(var p=f.value,m=0;m<p.length;m++)p[m].removed=true;this._callbacks.clear();}return this},t.offByHandle=function(e){var t=e.name;e.removed=true,this._callbackActive.has(t)&&this._callbackActive.get(t)===this._callbacks.get(t)&&this._callbackActive.set(t,this._callbackActive.get(t).slice());var n=this._callbacks.get(t);if(!n)return this;var i=n.indexOf(e);return -1!==i&&(n.splice(i,1),0===n.length&&this._callbacks.delete(t)),this},t.fire=function(e,t,n,i,r,s,a,o,l){if(!e)return this;var u,c=this._callbacks.get(e);if(!c)return this;this._callbackActive.has(e)?this._callbackActive.get(e)!==c&&(u=c.slice()):this._callbackActive.set(e,c);for(var h=0;(u||this._callbackActive.get(e))&&h<(u||this._callbackActive.get(e)).length;h++){var f=(u||this._callbackActive.get(e))[h];if(f.callback&&(f.callback.call(f.scope,t,n,i,r,s,a,o,l),f._once)){var d=this._callbacks.get(e),p=d?d.indexOf(f):-1;if(-1!==p){this._callbackActive.get(e)===d&&this._callbackActive.set(e,this._callbackActive.get(e).slice());var m=this._callbacks.get(e);if(!m)continue;m[p].removed=true,m.splice(p,1),0===m.length&&this._callbacks.delete(e);}}}return u||this._callbackActive.delete(e),this},t.hasEvent=function(e){var t;return !!(null==(t=this._callbacks.get(e))?void 0:t.length)},e}(),ex=function(){function e(){this._list=[],this._index={};}var t=e.prototype;return t.push=function(e,t){if(this._index[e])throw Error("Key already in index "+e);var n=this._list.push(t)-1;this._index[e]=n;},t.has=function(e){return void 0!==this._index[e]},t.get=function(e){var t=this._index[e];return void 0!==t?this._list[t]:null},t.remove=function(e){var t=this._index[e];if(void 0!==t){for(e in this._list.splice(t,1),delete this._index[e],this._index){var n=this._index[e];n>t&&(this._index[e]=n-1);}return true}return false},t.list=function(){return this._list},t.clear=function(){for(var e in this._list.length=0,this._index)delete this._index[e];},e}();function eb(e,t){return null!=t&&"undefined"!=typeof Symbol&&t[Symbol.hasInstance]?!!t[Symbol.hasInstance](e):n(e,t)}var eT=function(){function e(){}return e.loadScript=function(e,t){var n=document.createElement("script");n.setAttribute("src",e),n.onload=function(){t(null);},n.onerror=function(){t("Failed to load script='"+e+"'");},document.body.appendChild(n);},e.loadWasm=function(t,n,i){var r=e.wasmSupported()&&n.glueUrl&&n.wasmUrl?n.glueUrl:n.fallbackUrl;r?e.loadScript(r,function(e){if(e)i(e,null);else {var r=window[t];window[t]=void 0,r({locateFile:function(){return n.wasmUrl},onAbort:function(){i("wasm module aborted.");}}).then(function(e){i(null,e);});}}):i("No supported wasm modules found.",null);},e.getModule=function(t){return e.modules.hasOwnProperty(t)||(e.modules[t]={config:null,initializing:false,instance:null,callbacks:[]}),e.modules[t]},e.initialize=function(t,n){if(!n.initializing){var i=n.config;(i.glueUrl||i.wasmUrl||i.fallbackUrl)&&(n.initializing=true,e.loadWasm(t,i,function(e,t){e?i.errorHandler&&i.errorHandler(e):(n.instance=t,n.callbacks.forEach(function(e){e(t);}));}));}},e}();eT.modules={},t=function(){try{if("object"==typeof WebAssembly&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(eb(e,WebAssembly.Module))return eb(new WebAssembly.Instance(e),WebAssembly.Instance)}}catch(e){}return false},r=i={},eT.wasmSupported=function(){return r===i&&(r=t()),r};var eE=function(){function e(){}return e.setConfig=function(e,t){var n=eT.getModule(e);n.config=t,n.callbacks.length>0&&eT.initialize(e,n);},e.getConfig=function(e){var t,n;return null==(n=eT.modules)||null==(t=n[e])?void 0:t.config},e.getInstance=function(e,t){var n=eT.getModule(e);n.instance?t(n.instance):(n.callbacks.push(t),n.config&&eT.initialize(e,n));},e}(),ew=function(){function e(e){this.offset=0,this.arraybuffer=e,this.dataView=new DataView(e);}var t,n=e.prototype;return n.reset=function(e){ void 0===e&&(e=0),this.offset=e;},n.skip=function(e){this.offset+=e;},n.align=function(e){this.offset=this.offset+e-1&~(e-1);},n._inc=function(e){return this.offset+=e,this.offset-e},n.readChar=function(){return String.fromCharCode(this.dataView.getUint8(this.offset++))},n.readChars=function(e){for(var t="",n=0;n<e;++n)t+=this.readChar();return t},n.readU8=function(){return this.dataView.getUint8(this.offset++)},n.readU16=function(){return this.dataView.getUint16(this._inc(2),true)},n.readU32=function(){return this.dataView.getUint32(this._inc(4),true)},n.readU64=function(){return this.readU32()+0x100000000*this.readU32()},n.readU32be=function(){return this.dataView.getUint32(this._inc(4),false)},n.readArray=function(e){for(var t=0;t<e.length;++t)e[t]=this.readU8();},n.readLine=function(){for(var e=this.dataView,t="";!(this.offset>=e.byteLength);){var n=String.fromCharCode(this.readU8());if("\n"===n)break;t+=n;}return t},t=[{key:"remainingBytes",get:function(){return this.dataView.byteLength-this.offset}}],function(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||false,i.configurable=true,"value"in i&&(i.writable=true),Object.defineProperty(e,i.key,i);}}(e.prototype,t),e}(),eA=function(){function e(e){this.items=[],this.length=0,this.loopIndex=-1,this._sortBy=e.sortBy,this._sortHandler=this._doSort.bind(this);}var t=e.prototype;return t._binarySearch=function(e){for(var t,n,i=0,r=this.items.length-1,s=e[this._sortBy];i<=r;)t=Math.floor((i+r)/2),(n=this.items[t][this._sortBy])<=s?i=t+1:n>s&&(r=t-1);return i},t._doSort=function(e,t){var n=this._sortBy;return e[n]-t[n]},t.insert=function(e){var t=this._binarySearch(e);this.items.splice(t,0,e),this.length++,this.loopIndex>=t&&this.loopIndex++;},t.append=function(e){this.items.push(e),this.length++;},t.remove=function(e){var t=this.items.indexOf(e);!(t<0)&&(this.items.splice(t,1),this.length--,this.loopIndex>=t&&this.loopIndex--);},t.sort=function(){var e=this.loopIndex>=0?this.items[this.loopIndex]:null;this.items.sort(this._sortHandler),null!==e&&(this.loopIndex=this.items.indexOf(e));},e}();function eC(e,t){return (eC=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var eP=function(e){if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function t(t){var n;return (n=e.call(this)||this)._index={},n._list=[],n._parent=t,n}t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:true,configurable:true}}),e&&eC(t,e);var i,r=t.prototype;return r.add=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var i=false,r=this._processArguments(t,true);if(!r.length)return i;for(var s=0;s<r.length;s++)this._index[r[s]]||(i=true,this._index[r[s]]=true,this._list.push(r[s]),this.fire("add",r[s],this._parent));return i&&this.fire("change",this._parent),i},r.remove=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];var i=false;if(!this._list.length)return i;var r=this._processArguments(t,true);if(!r.length)return i;for(var s=0;s<r.length;s++)this._index[r[s]]&&(i=true,delete this._index[r[s]],this._list.splice(this._list.indexOf(r[s]),1),this.fire("remove",r[s],this._parent));return i&&this.fire("change",this._parent),i},r.clear=function(){if(this._list.length){var e=this._list.slice(0);this._list=[],this._index={};for(var t=0;t<e.length;t++)this.fire("remove",e[t],this._parent);this.fire("change",this._parent);}},r.has=function(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];return !!this._list.length&&this._has(this._processArguments(t))},r._has=function(e){if(!this._list.length||!e.length)return false;for(var t=0;t<e.length;t++)if(1===e[t].length){if(this._index[e[t][0]])return true}else {for(var n=true,i=0;i<e[t].length;i++)if(!this._index[e[t][i]]){n=false;break}if(n)return true}return false},r.list=function(){return this._list.slice(0)},r._processArguments=function(e,t){var i,r,s=[],a=[];if(!e||!e.length)return s;for(var o=0;o<e.length;o++)if(i=e[o],null!=(r=Array)&&"undefined"!=typeof Symbol&&r[Symbol.hasInstance]?!!r[Symbol.hasInstance](i):n(i,r)){t||(a=[]);for(var l=0;l<e[o].length;l++)"string"==typeof e[o][l]&&(t?s.push(e[o][l]):a.push(e[o][l]));!t&&a.length&&s.push(a);}else "string"==typeof e[o]&&(t?s.push(e[o]):s.push([e[o]]));return s},i=[{key:"size",get:function(){return this._list.length}}],function(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||false,i.configurable=true,"value"in i&&(i.writable=true),Object.defineProperty(e,i.key,i);}}(t.prototype,i),t}(eS);eP.EVENT_ADD="add",eP.EVENT_REMOVE="remove",eP.EVENT_CHANGE="change";var eI="undefined"!=typeof window&&window.performance&&window.performance.now?performance.now.bind(performance):Date.now;function eD(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=Array(t);n<t;n++)i[n]=e[n];return i}var eL=/^(([^:/?#]+):)?(\/\/([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?/,eM=function(){function e(e){var t=e.match(eL);this.scheme=t[2],this.authority=t[4],this.path=t[5],this.query=t[7],this.fragment=t[9];}var t=e.prototype;return t.toString=function(){var e="";return this.scheme&&(e+=""+this.scheme+":"),this.authority&&(e+="//"+this.authority),e+=this.path,this.query&&(e+="?"+this.query),this.fragment&&(e+="#"+this.fragment),e},t.getQuery=function(){var e={};if(this.query)for(var t,n=decodeURIComponent(this.query).split("&"),i=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(n)return (n=n.call(e)).next.bind(n);if(Array.isArray(e)||(n=function(e,t){if(e){if("string"==typeof e)return eD(e,void 0);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return eD(e,void 0)}}(e))){n&&(e=n);var i=0;return function(){return i>=e.length?{done:true}:{done:false,value:e[i++]}}}throw TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(n);!(t=i()).done;){var r=t.value.split("=");e[r[0]]=r[1];}return e},t.setQuery=function(e){var t="";for(var n in e)e.hasOwnProperty(n)&&(""!==t&&(t+="&"),t+=encodeURIComponent(n)+"="+encodeURIComponent(e[n]));this.query=t;},e}(),eR=function(){function e(){}return e.set=function(e,t){},e.get=function(t){return e._traceChannels.has(t)},e}();eR._traceChannels=new Set,eR.stack=false;var eO={DEG_TO_RAD:Math.PI/180,RAD_TO_DEG:180/Math.PI,clamp:function(e,t,n){return e>=n?n:e<=t?t:e},intToBytes24:function(e){return [e>>16&255,e>>8&255,255&e]},intToBytes32:function(e){return [e>>24&255,e>>16&255,e>>8&255,255&e]},bytesToInt24:function(e,t,n){return e.length&&(n=e[2],t=e[1],e=e[0]),e<<16|t<<8|n},bytesToInt32:function(e,t,n,i){return e.length&&(i=e[3],n=e[2],t=e[1],e=e[0]),(e<<24|t<<16|n<<8|i)>>>0},lerp:function(e,t,n){return e+(t-e)*eO.clamp(n,0,1)},lerpAngle:function(e,t,n){return t-e>180&&(t-=360),t-e<-180&&(t+=360),eO.lerp(e,t,eO.clamp(n,0,1))},powerOfTwo:function(e){return 0!==e&&!(e&e-1)},nextPowerOfTwo:function(e){return e--,e|=e>>1,e|=e>>2,e|=e>>4,e|=e>>8,e|=e>>16,++e},nearestPowerOfTwo:function(e){return Math.pow(2,Math.round(Math.log2(e)))},random:function(e,t){return Math.random()*(t-e)+e},smoothstep:function(e,t,n){return n<=e?0:n>=t?1:(n=(n-e)/(t-e))*n*(3-2*n)},smootherstep:function(e,t,n){return n<=e?0:n>=t?1:(n=(n-e)/(t-e))*n*n*(n*(6*n-15)+10)},roundUp:function(e,t){return 0===t?e:Math.ceil(e/t)*t},between:function(e,t,n,i){var r=Math.min(t,n),s=Math.max(t,n);return i?e>=r&&e<=s:e>r&&e<s}},ek=function(){function e(e,t,n,i){ void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),void 0===i&&(i=1);var r,s=e.length;3===s||4===s?(this.r=e[0],this.g=e[1],this.b=e[2],this.a=null!=(r=e[3])?r:1):(this.r=e,this.g=t,this.b=n,this.a=i);}var t=e.prototype;return t.clone=function(){return new this.constructor(this.r,this.g,this.b,this.a)},t.copy=function(e){return this.r=e.r,this.g=e.g,this.b=e.b,this.a=e.a,this},t.equals=function(e){return this.r===e.r&&this.g===e.g&&this.b===e.b&&this.a===e.a},t.set=function(e,t,n,i){return void 0===i&&(i=1),this.r=e,this.g=t,this.b=n,this.a=i,this},t.lerp=function(e,t,n){return this.r=e.r+n*(t.r-e.r),this.g=e.g+n*(t.g-e.g),this.b=e.b+n*(t.b-e.b),this.a=e.a+n*(t.a-e.a),this},t.linear=function(e){return void 0===e&&(e=this),this.r=Math.pow(e.r,2.2),this.g=Math.pow(e.g,2.2),this.b=Math.pow(e.b,2.2),this.a=e.a,this},t.gamma=function(e){return void 0===e&&(e=this),this.r=Math.pow(e.r,1/2.2),this.g=Math.pow(e.g,1/2.2),this.b=Math.pow(e.b,1/2.2),this.a=e.a,this},t.mulScalar=function(e){return this.r*=e,this.g*=e,this.b*=e,this},t.fromString=function(e){var t,n=parseInt(e.replace("#","0x"),16);return e.length>7?t=eO.intToBytes32(n):(t=eO.intToBytes24(n))[3]=255,this.set(t[0]/255,t[1]/255,t[2]/255,t[3]/255),this},t.fromArray=function(e,t){var n,i,r,s;return void 0===t&&(t=0),this.r=null!=(n=e[t])?n:this.r,this.g=null!=(i=e[t+1])?i:this.g,this.b=null!=(r=e[t+2])?r:this.b,this.a=null!=(s=e[t+3])?s:this.a,this},t.toString=function(e,t){var n=this.r,i=this.g,r=this.b,s=this.a;if(t||n>1||i>1||r>1)return n.toFixed(3)+", "+i.toFixed(3)+", "+r.toFixed(3)+", "+s.toFixed(3);var a="#"+(0x1000000+(Math.round(255*n)<<16)+(Math.round(255*i)<<8)+Math.round(255*r)).toString(16).slice(1);if(true===e){var o=Math.round(255*s).toString(16);this.a<16/255?a+="0"+o:a+=o;}return a},t.toArray=function(e,t,n){return void 0===e&&(e=[]),void 0===t&&(t=0),void 0===n&&(n=true),e[t]=this.r,e[t+1]=this.g,e[t+2]=this.b,n&&(e[t+3]=this.a),e},e}();ek.BLACK=Object.freeze(new ek(0,0,0,1)),ek.BLUE=Object.freeze(new ek(0,0,1,1)),ek.CYAN=Object.freeze(new ek(0,1,1,1)),ek.GRAY=Object.freeze(new ek(.5,.5,.5,1)),ek.GREEN=Object.freeze(new ek(0,1,0,1)),ek.MAGENTA=Object.freeze(new ek(1,0,1,1)),ek.RED=Object.freeze(new ek(1,0,0,1)),ek.WHITE=Object.freeze(new ek(1,1,1,1)),ek.YELLOW=Object.freeze(new ek(1,1,0,1));var eF=function(){function e(e,t){ void 0===t&&(t=0),this._left=-1/0,this._right=1/0,this._recip=0,this._p0=0,this._p1=0,this._m0=0,this._m1=0,this._curve=e,this._reset(t);}var t=e.prototype;return t.evaluate=function(e,t){ void 0===t&&(t=false),(t||e<this._left||e>=this._right)&&this._reset(e);var n,i=this._curve.type;if(5===i)n=this._p0;else {var r=0===this._recip?0:(e-this._left)*this._recip;n=0===i?eO.lerp(this._p0,this._p1,r):1===i?eO.lerp(this._p0,this._p1,r*r*(3-2*r)):this._evaluateHermite(this._p0,this._p1,this._m0,this._m1,r);}return n},t._reset=function(e){var t=this._curve.keys,n=t.length;if(n)if(e<t[0][0])this._left=-1/0,this._right=t[0][0],this._recip=0,this._p0=this._p1=t[0][1],this._m0=this._m1=0;else if(e>=t[n-1][0])this._left=t[n-1][0],this._right=1/0,this._recip=0,this._p0=this._p1=t[n-1][1],this._m0=this._m1=0;else {for(var i=0;e>=t[i+1][0];)i++;this._left=t[i][0],this._right=t[i+1][0];var r=1/(this._right-this._left);this._recip=isFinite(r)?r:0,this._p0=t[i][1],this._p1=t[i+1][1],4===this._curve.type&&this._calcTangents(t,i);}else this._left=-1/0,this._right=1/0,this._recip=0,this._p0=this._p1=this._m0=this._m1=0;},t._calcTangents=function(e,t){var n,i,r=e[t],s=e[t+1];if(n=0===t?[e[0][0]+(e[0][0]-e[1][0]),e[0][1]+(e[0][1]-e[1][1])]:e[t-1],i=t===e.length-2?[e[t+1][0]+(e[t+1][0]-e[t][0]),e[t+1][1]+(e[t+1][1]-e[t][1])]:e[t+2],4===this._curve.type){var a=2*(s[0]-r[0])/(s[0]-n[0]),o=2*(s[0]-r[0])/(i[0]-r[0]);this._m0=this._curve.tension*(isFinite(a)?a:0)*(s[1]-n[1]),this._m1=this._curve.tension*(isFinite(o)?o:0)*(i[1]-r[1]);}else {var l=(s[0]-r[0])/(r[0]-n[0]),u=(s[0]-r[0])/(i[0]-s[0]),c=r[1]+(n[1]-r[1])*(isFinite(l)?l:0),h=s[1]+(i[1]-s[1])*(isFinite(u)?u:0),f=this._curve.tension;this._m0=f*(s[1]-c),this._m1=f*(h-r[1]);}},t._evaluateHermite=function(e,t,n,i,r){var s=r*r,a=r+r,o=1-r,l=o*o;return (1+a)*l*e+r*l*n+s*(3-a)*t+s*(r-1)*i},e}(),eN=function(){function e(e){if(this.keys=[],this.type=1,this.tension=.5,this._eval=new eF(this),e)for(var t=0;t<e.length-1;t+=2)this.keys.push([e[t],e[t+1]]);this.sort();}var t,n=e.prototype;return n.add=function(e,t){for(var n=this.keys,i=n.length,r=0;r<i&&!(n[r][0]>e);r++);var s=[e,t];return this.keys.splice(r,0,s),s},n.get=function(e){return this.keys[e]},n.sort=function(){this.keys.sort(function(e,t){return e[0]-t[0]});},n.value=function(e){return this._eval.evaluate(e,true)},n.closest=function(e){for(var t=this.keys,n=t.length,i=2,r=null,s=0;s<n;s++){var a=Math.abs(e-t[s][0]);if(i>=a)i=a,r=t[s];else break}return r},n.clone=function(){var e=new this.constructor;return e.keys=this.keys.map(function(e){return [].concat(e)}),e.type=this.type,e.tension=this.tension,e},n.quantize=function(e){var t=new Float32Array(e=Math.max(e,2)),n=1/(e-1);t[0]=this._eval.evaluate(0,true);for(var i=1;i<e;i++)t[i]=this._eval.evaluate(n*i);return t},n.quantizeClamped=function(e,t,n){for(var i=this.quantize(e),r=0;r<i.length;++r)i[r]=Math.min(n,Math.max(t,i[r]));return i},t=[{key:"length",get:function(){return this.keys.length}}],function(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||false,i.configurable=true,"value"in i&&(i.writable=true),Object.defineProperty(e,i.key,i);}}(e.prototype,t),e}(),eB=function(){function e(){for(var e=arguments.length,t=Array(e),n=0;n<e;n++)t[n]=arguments[n];if(this.curves=[],this._type=1,t.length>1)for(var i=0;i<t.length;i++)this.curves.push(new eN(t[i]));else if(0===t.length)this.curves.push(new eN);else {var r=t[0];if("number"==typeof r)for(var s=0;s<r;s++)this.curves.push(new eN);else for(var a=0;a<r.length;a++)this.curves.push(new eN(r[a]));}}var t,n=e.prototype;return n.get=function(e){return this.curves[e]},n.value=function(e,t){ void 0===t&&(t=[]);var n=this.curves.length;t.length=n;for(var i=0;i<n;i++)t[i]=this.curves[i].value(e);return t},n.clone=function(){var e=new this.constructor;e.curves=[];for(var t=0;t<this.curves.length;t++)e.curves.push(this.curves[t].clone());return e._type=this._type,e},n.quantize=function(e){e=Math.max(e,2);for(var t=this.curves.length,n=new Float32Array(e*t),i=1/(e-1),r=0;r<t;r++)for(var s=new eF(this.curves[r]),a=0;a<e;a++)n[a*t+r]=s.evaluate(i*a);return n},n.quantizeClamped=function(e,t,n){for(var i=this.quantize(e),r=0;r<i.length;++r)i[r]=Math.min(n,Math.max(t,i[r]));return i},t=[{key:"length",get:function(){return this.curves.length}},{key:"type",get:function(){return this._type},set:function(e){this._type=e;for(var t=0;t<this.curves.length;t++)this.curves[t].type=e;}}],function(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||false,i.configurable=true,"value"in i&&(i.writable=true),Object.defineProperty(e,i.key,i);}}(e.prototype,t),e}(),eU=new Float32Array(1),ez=new Int32Array(eU.buffer),eV=function(){function e(){}return e.float2Half=function(e){eU[0]=e;var t=ez[0],n=t>>16&32768,i=t>>12&2047,r=t>>23&255;return r<103?n:r>142?(n|=31744,n|=+(255!==r)&&8388607&t):r<113?(i|=2048,n|=(i>>114-r)+(i>>113-r&1)):(n|=r-112<<10|i>>1,n+=1&i)},e.float2RGBA8=function(e,t){eU[0]=e;var n=ez[0];t.r=(n>>24&255)/255,t.g=(n>>16&255)/255,t.b=(n>>8&255)/255,t.a=(255&n)/255;},e}(),eG=function(){function e(){}return e.concentric=function(e,t){var n=[];n.push(0,0);for(var i=2*Math.PI/e/t,r=1;r<=e;r++)for(var s=r/e,a=Math.max(1,Math.floor(2*Math.PI*s/i)),o=2*Math.PI/a,l=0;l<a;l++){var u=l*o,c=s*Math.cos(u),h=s*Math.sin(u);n.push(c,h);}return n},e}(),eH=function(){function e(e,t,n){ void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),3===e.length?(this.x=e[0],this.y=e[1],this.z=e[2]):(this.x=e,this.y=t,this.z=n);}var t=e.prototype;return t.add=function(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this},t.add2=function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this},t.addScalar=function(e){return this.x+=e,this.y+=e,this.z+=e,this},t.addScaled=function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this},t.clone=function(){return new this.constructor(this.x,this.y,this.z)},t.copy=function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this},t.cross=function(e,t){var n=e.x,i=e.y,r=e.z,s=t.x,a=t.y,o=t.z;return this.x=i*o-a*r,this.y=r*s-o*n,this.z=n*a-s*i,this},t.distance=function(e){var t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return Math.sqrt(t*t+n*n+i*i)},t.div=function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this},t.div2=function(e,t){return this.x=e.x/t.x,this.y=e.y/t.y,this.z=e.z/t.z,this},t.divScalar=function(e){return this.x/=e,this.y/=e,this.z/=e,this},t.dot=function(e){return this.x*e.x+this.y*e.y+this.z*e.z},t.equals=function(e){return this.x===e.x&&this.y===e.y&&this.z===e.z},t.equalsApprox=function(e,t){return void 0===t&&(t=1e-6),Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t&&Math.abs(this.z-e.z)<t},t.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},t.lengthSq=function(){return this.x*this.x+this.y*this.y+this.z*this.z},t.lerp=function(e,t,n){return this.x=e.x+n*(t.x-e.x),this.y=e.y+n*(t.y-e.y),this.z=e.z+n*(t.z-e.z),this},t.mul=function(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this},t.mul2=function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this},t.mulScalar=function(e){return this.x*=e,this.y*=e,this.z*=e,this},t.normalize=function(e){ void 0===e&&(e=this);var t=e.x*e.x+e.y*e.y+e.z*e.z;if(t>0){var n=1/Math.sqrt(t);this.x=e.x*n,this.y=e.y*n,this.z=e.z*n;}return this},t.floor=function(e){return void 0===e&&(e=this),this.x=Math.floor(e.x),this.y=Math.floor(e.y),this.z=Math.floor(e.z),this},t.ceil=function(e){return void 0===e&&(e=this),this.x=Math.ceil(e.x),this.y=Math.ceil(e.y),this.z=Math.ceil(e.z),this},t.round=function(e){return void 0===e&&(e=this),this.x=Math.round(e.x),this.y=Math.round(e.y),this.z=Math.round(e.z),this},t.min=function(e){return e.x<this.x&&(this.x=e.x),e.y<this.y&&(this.y=e.y),e.z<this.z&&(this.z=e.z),this},t.max=function(e){return e.x>this.x&&(this.x=e.x),e.y>this.y&&(this.y=e.y),e.z>this.z&&(this.z=e.z),this},t.project=function(e){var t=(this.x*e.x+this.y*e.y+this.z*e.z)/(e.x*e.x+e.y*e.y+e.z*e.z);return this.x=e.x*t,this.y=e.y*t,this.z=e.z*t,this},t.set=function(e,t,n){return this.x=e,this.y=t,this.z=n,this},t.sub=function(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this},t.sub2=function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this},t.subScalar=function(e){return this.x-=e,this.y-=e,this.z-=e,this},t.fromArray=function(e,t){var n,i,r;return void 0===t&&(t=0),this.x=null!=(n=e[t])?n:this.x,this.y=null!=(i=e[t+1])?i:this.y,this.z=null!=(r=e[t+2])?r:this.z,this},t.toString=function(){return "["+this.x+", "+this.y+", "+this.z+"]"},t.toArray=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e},e}();eH.ZERO=Object.freeze(new eH(0,0,0)),eH.HALF=Object.freeze(new eH(.5,.5,.5)),eH.ONE=Object.freeze(new eH(1,1,1)),eH.UP=Object.freeze(new eH(0,1,0)),eH.DOWN=Object.freeze(new eH(0,-1,0)),eH.RIGHT=Object.freeze(new eH(1,0,0)),eH.LEFT=Object.freeze(new eH(-1,0,0)),eH.FORWARD=Object.freeze(new eH(0,0,-1)),eH.BACK=Object.freeze(new eH(0,0,1));var eW=function(){function e(){this.data=new Float32Array(9),this.data[0]=this.data[4]=this.data[8]=1;}var t=e.prototype;return t.clone=function(){return new this.constructor().copy(this)},t.copy=function(e){var t=e.data,n=this.data;return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],this},t.set=function(e){var t=this.data;return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],this},t.getX=function(e){return void 0===e&&(e=new eH),e.set(this.data[0],this.data[1],this.data[2])},t.getY=function(e){return void 0===e&&(e=new eH),e.set(this.data[3],this.data[4],this.data[5])},t.getZ=function(e){return void 0===e&&(e=new eH),e.set(this.data[6],this.data[7],this.data[8])},t.equals=function(e){var t=this.data,n=e.data;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.isIdentity=function(){var e=this.data;return 1===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&1===e[4]&&0===e[5]&&0===e[6]&&0===e[7]&&1===e[8]},t.setIdentity=function(){var e=this.data;return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=1,e[5]=0,e[6]=0,e[7]=0,e[8]=1,this},t.toString=function(){return "["+this.data.join(", ")+"]"},t.transpose=function(e){ void 0===e&&(e=this);var t,n=e.data,i=this.data;return n===i?(t=n[1],i[1]=n[3],i[3]=t,t=n[2],i[2]=n[6],i[6]=t,t=n[5],i[5]=n[7],i[7]=t):(i[0]=n[0],i[1]=n[3],i[2]=n[6],i[3]=n[1],i[4]=n[4],i[5]=n[7],i[6]=n[2],i[7]=n[5],i[8]=n[8]),this},t.setFromMat4=function(e){var t=e.data,n=this.data;return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[4],n[4]=t[5],n[5]=t[6],n[6]=t[8],n[7]=t[9],n[8]=t[10],this},t.setFromQuat=function(e){var t=e.x,n=e.y,i=e.z,r=e.w,s=t+t,a=n+n,o=i+i,l=t*s,u=t*a,c=t*o,h=n*a,f=n*o,d=i*o,p=r*s,m=r*a,_=r*o,v=this.data;return v[0]=1-(h+d),v[1]=u+_,v[2]=c-m,v[3]=u-_,v[4]=1-(l+d),v[5]=f+p,v[6]=c+m,v[7]=f-p,v[8]=1-(l+h),this},t.invertMat4=function(e){var t=e.data,n=t[0],i=t[1],r=t[2],s=t[4],a=t[5],o=t[6],l=t[8],u=t[9],c=t[10],h=c*a-o*u,f=-c*s+o*l,d=u*s-a*l,p=n*h+i*f+r*d;if(0===p)this.setIdentity();else {var m=1/p,_=this.data;_[0]=h*m,_[1]=(-c*i+r*u)*m,_[2]=(o*i-r*a)*m,_[3]=f*m,_[4]=(c*n-r*l)*m,_[5]=(-o*n+r*s)*m,_[6]=d*m,_[7]=(-u*n+i*l)*m,_[8]=(a*n-i*s)*m;}return this},t.transformVector=function(e,t){ void 0===t&&(t=new eH);var n=this.data,i=e.x,r=e.y,s=e.z;return t.x=i*n[0]+r*n[3]+s*n[6],t.y=i*n[1]+r*n[4]+s*n[7],t.z=i*n[2]+r*n[5]+s*n[8],t},e}();eW.IDENTITY=Object.freeze(new eW),eW.ZERO=Object.freeze(new eW().set([0,0,0,0,0,0,0,0,0]));var ej=function(){function e(e,t){ void 0===e&&(e=0),void 0===t&&(t=0),2===e.length?(this.x=e[0],this.y=e[1]):(this.x=e,this.y=t);}var t=e.prototype;return t.add=function(e){return this.x+=e.x,this.y+=e.y,this},t.add2=function(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this},t.addScalar=function(e){return this.x+=e,this.y+=e,this},t.addScaled=function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this},t.clone=function(){return new this.constructor(this.x,this.y)},t.copy=function(e){return this.x=e.x,this.y=e.y,this},t.cross=function(e){return this.x*e.y-this.y*e.x},t.distance=function(e){var t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)},t.div=function(e){return this.x/=e.x,this.y/=e.y,this},t.div2=function(e,t){return this.x=e.x/t.x,this.y=e.y/t.y,this},t.divScalar=function(e){return this.x/=e,this.y/=e,this},t.dot=function(e){return this.x*e.x+this.y*e.y},t.equals=function(e){return this.x===e.x&&this.y===e.y},t.equalsApprox=function(e,t){return void 0===t&&(t=1e-6),Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t},t.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},t.lengthSq=function(){return this.x*this.x+this.y*this.y},t.lerp=function(e,t,n){return this.x=e.x+n*(t.x-e.x),this.y=e.y+n*(t.y-e.y),this},t.mul=function(e){return this.x*=e.x,this.y*=e.y,this},t.mul2=function(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this},t.mulScalar=function(e){return this.x*=e,this.y*=e,this},t.normalize=function(e){ void 0===e&&(e=this);var t=e.x*e.x+e.y*e.y;if(t>0){var n=1/Math.sqrt(t);this.x=e.x*n,this.y=e.y*n;}return this},t.rotate=function(e){var t=Math.atan2(this.x,this.y)+e*eO.DEG_TO_RAD,n=Math.sqrt(this.x*this.x+this.y*this.y);return this.x=Math.sin(t)*n,this.y=Math.cos(t)*n,this},t.angle=function(){return Math.atan2(this.x,this.y)*eO.RAD_TO_DEG},t.angleTo=function(e){return Math.atan2(this.x*e.y+this.y*e.x,this.x*e.x+this.y*e.y)*eO.RAD_TO_DEG},t.floor=function(e){return void 0===e&&(e=this),this.x=Math.floor(e.x),this.y=Math.floor(e.y),this},t.ceil=function(e){return void 0===e&&(e=this),this.x=Math.ceil(e.x),this.y=Math.ceil(e.y),this},t.round=function(e){return void 0===e&&(e=this),this.x=Math.round(e.x),this.y=Math.round(e.y),this},t.min=function(e){return e.x<this.x&&(this.x=e.x),e.y<this.y&&(this.y=e.y),this},t.max=function(e){return e.x>this.x&&(this.x=e.x),e.y>this.y&&(this.y=e.y),this},t.set=function(e,t){return this.x=e,this.y=t,this},t.sub=function(e){return this.x-=e.x,this.y-=e.y,this},t.sub2=function(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this},t.subScalar=function(e){return this.x-=e,this.y-=e,this},t.fromArray=function(e,t){var n,i;return void 0===t&&(t=0),this.x=null!=(n=e[t])?n:this.x,this.y=null!=(i=e[t+1])?i:this.y,this},t.toString=function(){return "["+this.x+", "+this.y+"]"},t.toArray=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e},e.angleRad=function(e,t){return Math.atan2(e.x*t.y-e.y*t.x,e.x*t.x+e.y*t.y)},e}();ej.ZERO=Object.freeze(new ej(0,0)),ej.HALF=Object.freeze(new ej(.5,.5)),ej.ONE=Object.freeze(new ej(1,1)),ej.UP=Object.freeze(new ej(0,1)),ej.DOWN=Object.freeze(new ej(0,-1)),ej.RIGHT=Object.freeze(new ej(1,0)),ej.LEFT=Object.freeze(new ej(-1,0));var eX=function(){function e(e,t,n,i){ void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),void 0===i&&(i=0),4===e.length?(this.x=e[0],this.y=e[1],this.z=e[2],this.w=e[3]):(this.x=e,this.y=t,this.z=n,this.w=i);}var t=e.prototype;return t.add=function(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this},t.add2=function(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},t.addScalar=function(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this},t.addScaled=function(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this},t.clone=function(){return new this.constructor(this.x,this.y,this.z,this.w)},t.copy=function(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=e.w,this},t.div=function(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this},t.div2=function(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},t.divScalar=function(e){return this.x/=e,this.y/=e,this.z/=e,this.w/=e,this},t.dot=function(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w},t.equals=function(e){return this.x===e.x&&this.y===e.y&&this.z===e.z&&this.w===e.w},t.equalsApprox=function(e,t){return void 0===t&&(t=1e-6),Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t&&Math.abs(this.z-e.z)<t&&Math.abs(this.w-e.w)<t},t.length=function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},t.lengthSq=function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},t.lerp=function(e,t,n){return this.x=e.x+n*(t.x-e.x),this.y=e.y+n*(t.y-e.y),this.z=e.z+n*(t.z-e.z),this.w=e.w+n*(t.w-e.w),this},t.mul=function(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this},t.mul2=function(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},t.mulScalar=function(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this},t.normalize=function(e){ void 0===e&&(e=this);var t=e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w;if(t>0){var n=1/Math.sqrt(t);this.x=e.x*n,this.y=e.y*n,this.z=e.z*n,this.w=e.w*n;}return this},t.floor=function(e){return void 0===e&&(e=this),this.x=Math.floor(e.x),this.y=Math.floor(e.y),this.z=Math.floor(e.z),this.w=Math.floor(e.w),this},t.ceil=function(e){return void 0===e&&(e=this),this.x=Math.ceil(e.x),this.y=Math.ceil(e.y),this.z=Math.ceil(e.z),this.w=Math.ceil(e.w),this},t.round=function(e){return void 0===e&&(e=this),this.x=Math.round(e.x),this.y=Math.round(e.y),this.z=Math.round(e.z),this.w=Math.round(e.w),this},t.min=function(e){return e.x<this.x&&(this.x=e.x),e.y<this.y&&(this.y=e.y),e.z<this.z&&(this.z=e.z),e.w<this.w&&(this.w=e.w),this},t.max=function(e){return e.x>this.x&&(this.x=e.x),e.y>this.y&&(this.y=e.y),e.z>this.z&&(this.z=e.z),e.w>this.w&&(this.w=e.w),this},t.set=function(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this},t.sub=function(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this},t.sub2=function(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},t.subScalar=function(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this},t.fromArray=function(e,t){var n,i,r,s;return void 0===t&&(t=0),this.x=null!=(n=e[t])?n:this.x,this.y=null!=(i=e[t+1])?i:this.y,this.z=null!=(r=e[t+2])?r:this.z,this.w=null!=(s=e[t+3])?s:this.w,this},t.toString=function(){return "["+this.x+", "+this.y+", "+this.z+", "+this.w+"]"},t.toArray=function(e,t){return void 0===e&&(e=[]),void 0===t&&(t=0),e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e},e}();eX.ZERO=Object.freeze(new eX(0,0,0,0)),eX.HALF=Object.freeze(new eX(.5,.5,.5,.5)),eX.ONE=Object.freeze(new eX(1,1,1,1));var eY=new ej,eq=new eH,eK=new eH,eZ=new eH,eQ=new eH,eJ=function(){function e(){this.data=new Float32Array(16),this.data[0]=this.data[5]=this.data[10]=this.data[15]=1;}var t,n=e.prototype;return n.add2=function(e,t){var n=e.data,i=t.data,r=this.data;return r[0]=n[0]+i[0],r[1]=n[1]+i[1],r[2]=n[2]+i[2],r[3]=n[3]+i[3],r[4]=n[4]+i[4],r[5]=n[5]+i[5],r[6]=n[6]+i[6],r[7]=n[7]+i[7],r[8]=n[8]+i[8],r[9]=n[9]+i[9],r[10]=n[10]+i[10],r[11]=n[11]+i[11],r[12]=n[12]+i[12],r[13]=n[13]+i[13],r[14]=n[14]+i[14],r[15]=n[15]+i[15],this},n.add=function(e){return this.add2(this,e)},n.clone=function(){return new this.constructor().copy(this)},n.copy=function(e){var t=e.data,n=this.data;return n[0]=t[0],n[1]=t[1],n[2]=t[2],n[3]=t[3],n[4]=t[4],n[5]=t[5],n[6]=t[6],n[7]=t[7],n[8]=t[8],n[9]=t[9],n[10]=t[10],n[11]=t[11],n[12]=t[12],n[13]=t[13],n[14]=t[14],n[15]=t[15],this},n.equals=function(e){var t=this.data,n=e.data;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]},n.isIdentity=function(){var e=this.data;return 1===e[0]&&0===e[1]&&0===e[2]&&0===e[3]&&0===e[4]&&1===e[5]&&0===e[6]&&0===e[7]&&0===e[8]&&0===e[9]&&1===e[10]&&0===e[11]&&0===e[12]&&0===e[13]&&0===e[14]&&1===e[15]},n.mul2=function(e,t){var n,i,r,s,a=e.data,o=t.data,l=this.data,u=a[0],c=a[1],h=a[2],f=a[3],d=a[4],p=a[5],m=a[6],_=a[7],v=a[8],g=a[9],y=a[10],S=a[11],x=a[12],b=a[13],T=a[14],E=a[15];return n=o[0],i=o[1],r=o[2],s=o[3],l[0]=u*n+d*i+v*r+x*s,l[1]=c*n+p*i+g*r+b*s,l[2]=h*n+m*i+y*r+T*s,l[3]=f*n+_*i+S*r+E*s,n=o[4],i=o[5],r=o[6],s=o[7],l[4]=u*n+d*i+v*r+x*s,l[5]=c*n+p*i+g*r+b*s,l[6]=h*n+m*i+y*r+T*s,l[7]=f*n+_*i+S*r+E*s,n=o[8],i=o[9],r=o[10],s=o[11],l[8]=u*n+d*i+v*r+x*s,l[9]=c*n+p*i+g*r+b*s,l[10]=h*n+m*i+y*r+T*s,l[11]=f*n+_*i+S*r+E*s,n=o[12],i=o[13],r=o[14],s=o[15],l[12]=u*n+d*i+v*r+x*s,l[13]=c*n+p*i+g*r+b*s,l[14]=h*n+m*i+y*r+T*s,l[15]=f*n+_*i+S*r+E*s,this},n.mulAffine2=function(e,t){var n,i,r,s=e.data,a=t.data,o=this.data,l=s[0],u=s[1],c=s[2],h=s[4],f=s[5],d=s[6],p=s[8],m=s[9],_=s[10],v=s[12],g=s[13],y=s[14];return n=a[0],i=a[1],r=a[2],o[0]=l*n+h*i+p*r,o[1]=u*n+f*i+m*r,o[2]=c*n+d*i+_*r,o[3]=0,n=a[4],i=a[5],r=a[6],o[4]=l*n+h*i+p*r,o[5]=u*n+f*i+m*r,o[6]=c*n+d*i+_*r,o[7]=0,n=a[8],i=a[9],r=a[10],o[8]=l*n+h*i+p*r,o[9]=u*n+f*i+m*r,o[10]=c*n+d*i+_*r,o[11]=0,n=a[12],i=a[13],r=a[14],o[12]=l*n+h*i+p*r+v,o[13]=u*n+f*i+m*r+g,o[14]=c*n+d*i+_*r+y,o[15]=1,this},n.mul=function(e){return this.mul2(this,e)},n.transformPoint=function(e,t){ void 0===t&&(t=new eH);var n=this.data,i=e.x,r=e.y,s=e.z;return t.x=i*n[0]+r*n[4]+s*n[8]+n[12],t.y=i*n[1]+r*n[5]+s*n[9]+n[13],t.z=i*n[2]+r*n[6]+s*n[10]+n[14],t},n.transformVector=function(e,t){ void 0===t&&(t=new eH);var n=this.data,i=e.x,r=e.y,s=e.z;return t.x=i*n[0]+r*n[4]+s*n[8],t.y=i*n[1]+r*n[5]+s*n[9],t.z=i*n[2]+r*n[6]+s*n[10],t},n.transformVec4=function(e,t){ void 0===t&&(t=new eX);var n=this.data,i=e.x,r=e.y,s=e.z,a=e.w;return t.x=i*n[0]+r*n[4]+s*n[8]+a*n[12],t.y=i*n[1]+r*n[5]+s*n[9]+a*n[13],t.z=i*n[2]+r*n[6]+s*n[10]+a*n[14],t.w=i*n[3]+r*n[7]+s*n[11]+a*n[15],t},n.setLookAt=function(e,t,n){eZ.sub2(e,t).normalize(),eK.copy(n).normalize(),eq.cross(eK,eZ).normalize(),eK.cross(eZ,eq);var i=this.data;return i[0]=eq.x,i[1]=eq.y,i[2]=eq.z,i[3]=0,i[4]=eK.x,i[5]=eK.y,i[6]=eK.z,i[7]=0,i[8]=eZ.x,i[9]=eZ.y,i[10]=eZ.z,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this},n.setFrustum=function(e,t,n,i,r,s){var a=2*r,o=t-e,l=i-n,u=s-r,c=this.data;return c[0]=a/o,c[1]=0,c[2]=0,c[3]=0,c[4]=0,c[5]=a/l,c[6]=0,c[7]=0,c[8]=(t+e)/o,c[9]=(i+n)/l,c[10]=(-s-r)/u,c[11]=-1,c[12]=0,c[13]=0,c[14]=-a*s/u,c[15]=0,this},n.setPerspective=function(t,n,i,r,s){return e._getPerspectiveHalfSize(eY,t,n,i,s),this.setFrustum(-eY.x,eY.x,-eY.y,eY.y,i,r)},n.setOrtho=function(e,t,n,i,r,s){var a=this.data;return a[0]=2/(t-e),a[1]=0,a[2]=0,a[3]=0,a[4]=0,a[5]=2/(i-n),a[6]=0,a[7]=0,a[8]=0,a[9]=0,a[10]=-2/(s-r),a[11]=0,a[12]=-(t+e)/(t-e),a[13]=-(i+n)/(i-n),a[14]=-(s+r)/(s-r),a[15]=1,this},n.setFromAxisAngle=function(e,t){t*=eO.DEG_TO_RAD;var n=e.x,i=e.y,r=e.z,s=Math.cos(t),a=Math.sin(t),o=1-s,l=o*n,u=o*i,c=this.data;return c[0]=l*n+s,c[1]=l*i+a*r,c[2]=l*r-a*i,c[3]=0,c[4]=l*i-a*r,c[5]=u*i+s,c[6]=u*r+a*n,c[7]=0,c[8]=l*r+a*i,c[9]=u*r-n*a,c[10]=o*r*r+s,c[11]=0,c[12]=0,c[13]=0,c[14]=0,c[15]=1,this},n.setTranslate=function(e,t,n){var i=this.data;return i[0]=1,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=1,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=1,i[11]=0,i[12]=e,i[13]=t,i[14]=n,i[15]=1,this},n.setScale=function(e,t,n){var i=this.data;return i[0]=e,i[1]=0,i[2]=0,i[3]=0,i[4]=0,i[5]=t,i[6]=0,i[7]=0,i[8]=0,i[9]=0,i[10]=n,i[11]=0,i[12]