mx3d 2025.3.21 → 2025.4.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mx3d",
3
- "version": "2025.3.21",
3
+ "version": "2025.4.7",
4
4
  "description": "我搭世界SDK",
5
5
  "main": "mx3d.min.js",
6
6
  "typings": "./index.d.ts",
package/mx3d.seat.min.js DELETED
@@ -1 +0,0 @@
1
- !function(t,i){"object"==typeof exports&&"undefined"!=typeof module?module.exports=i():"function"==typeof define&&define.amd?define(i):t.PointerEventsPolyfill=i()}(this,(function(){"use strict";function t(t,i){i=i||Object.create(null);var s=document.createEvent("Event");s.initEvent(t,i.bubbles||!1,i.cancelable||!1);for(var e,h=2;h<l.length;h++)s[e=l[h]]=i[e]||c[h];s.buttons=i.buttons||0;var n;return n=i.pressure&&s.buttons?i.pressure:s.buttons?.5:0,s.x=s.clientX,s.y=s.clientY,s.pointerId=i.pointerId||0,s.width=i.width||0,s.height=i.height||0,s.pressure=n,s.tiltX=i.tiltX||0,s.tiltY=i.tiltY||0,s.pointerType=i.pointerType||"",s.hwTimestamp=i.hwTimestamp||0,s.isPrimary=i.isPrimary||!1,s}function i(){this.array=[],this.size=0}function s(t,i,s,e){this.addCallback=t.bind(e),this.removeCallback=i.bind(e),this.changedCallback=s.bind(e),g&&(this.observer=new g(this.mutationWatcher.bind(this)))}function e(t){return"body /shadow-deep/ "+h(t)}function h(t){return'[touch-action="'+t+'"]'}function n(t){return"{ -ms-touch-action: "+t+"; touch-action: "+t+"; }"}function a(t){if(!x.pointermap.has(t)){var i=new Error("InvalidPointerId");throw i.name="InvalidPointerId",i}}function o(t){if(!t.ownerDocument.contains(t)){var i=new Error("InvalidStateError");throw i.name="InvalidStateError",i}}function r(t){return 0!==x.pointermap.get(t).buttons}var l=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","pageX","pageY"],c=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0],u=window.Map&&window.Map.prototype.forEach?Map:i;i.prototype={set:function(t,i){return void 0===i?this.delete(t):(this.has(t)||this.size++,void(this.array[t]=i))},has:function(t){return void 0!==this.array[t]},delete:function(t){this.has(t)&&(delete this.array[t],this.size--)},get:function(t){return this.array[t]},clear:function(){this.array.length=0,this.size=0},forEach:function(t,i){return this.array.forEach((function(s,e){t.call(i,s,e,this)}),this)}};var p=["bubbles","cancelable","view","detail","screenX","screenY","clientX","clientY","ctrlKey","altKey","shiftKey","metaKey","button","relatedTarget","buttons","pointerId","width","height","pressure","tiltX","tiltY","pointerType","hwTimestamp","isPrimary","type","target","currentTarget","which","pageX","pageY","timeStamp"],m=[!1,!1,null,null,0,0,0,0,!1,!1,!1,!1,0,null,0,0,0,0,0,0,0,"",0,!1,"",null,null,0,0,0,0],d={pointerover:1,pointerout:1,pointerenter:1,pointerleave:1},y="undefined"!=typeof SVGElementInstance,x={pointermap:new u,eventMap:Object.create(null),captureInfo:Object.create(null),eventSources:Object.create(null),eventSourceList:[],registerSource:function(t,i){var s=i,e=s.events;e&&(e.forEach((function(t){s[t]&&(this.eventMap[t]=s[t].bind(s))}),this),this.eventSources[t]=s,this.eventSourceList.push(s))},register:function(t){for(var i,s=this.eventSourceList.length,e=0;e<s&&(i=this.eventSourceList[e]);e++)i.register.call(i,t)},unregister:function(t){for(var i,s=this.eventSourceList.length,e=0;e<s&&(i=this.eventSourceList[e]);e++)i.unregister.call(i,t)},contains:function(t,i){try{return t.contains(i)}catch(t){return!1}},down:function(t){t.bubbles=!0,this.fireEvent("pointerdown",t)},move:function(t){t.bubbles=!0,this.fireEvent("pointermove",t)},up:function(t){t.bubbles=!0,this.fireEvent("pointerup",t)},enter:function(t){t.bubbles=!1,this.fireEvent("pointerenter",t)},leave:function(t){t.bubbles=!1,this.fireEvent("pointerleave",t)},over:function(t){t.bubbles=!0,this.fireEvent("pointerover",t)},out:function(t){t.bubbles=!0,this.fireEvent("pointerout",t)},cancel:function(t){t.bubbles=!0,this.fireEvent("pointercancel",t)},leaveOut:function(t){this.out(t),this.propagate(t,this.leave,!1)},enterOver:function(t){this.over(t),this.propagate(t,this.enter,!0)},eventHandler:function(t){if(!t._handledByPE){var i=t.type,s=this.eventMap&&this.eventMap[i];s&&s(t),t._handledByPE=!0}},listen:function(t,i){i.forEach((function(i){this.addEvent(t,i)}),this)},unlisten:function(t,i){i.forEach((function(i){this.removeEvent(t,i)}),this)},addEvent:function(t,i){t.addEventListener(i,this.boundHandler)},removeEvent:function(t,i){t.removeEventListener(i,this.boundHandler)},makeEvent:function(i,s){this.captureInfo[s.pointerId]&&(s.relatedTarget=null);var e=new t(i,s);return s.preventDefault&&(e.preventDefault=s.preventDefault),e._target=e._target||s.target,e},fireEvent:function(t,i){var s=this.makeEvent(t,i);return this.dispatchEvent(s)},cloneEvent:function(t){for(var i,s=Object.create(null),e=0;e<p.length;e++)s[i=p[e]]=t[i]||m[e],!y||"target"!==i&&"relatedTarget"!==i||s[i]instanceof SVGElementInstance&&(s[i]=s[i].correspondingUseElement);return t.preventDefault&&(s.preventDefault=function(){t.preventDefault()}),s},getTarget:function(t){var i=this.captureInfo[t.pointerId];return i?t._target!==i&&t.type in d?void 0:i:t._target},propagate:function(t,i,s){for(var e=t.target,h=[];!e.contains(t.relatedTarget)&&e!==document;)h.push(e),e=e.parentNode;s&&h.reverse(),h.forEach((function(s){t.target=s,i.call(this,t)}),this)},setCapture:function(i,s){this.captureInfo[i]&&this.releaseCapture(i),this.captureInfo[i]=s;var e=new t("gotpointercapture");e.pointerId=i,this.implicitRelease=this.releaseCapture.bind(this,i),document.addEventListener("pointerup",this.implicitRelease),document.addEventListener("pointercancel",this.implicitRelease),e._target=s,this.asyncDispatchEvent(e)},releaseCapture:function(i){var s=this.captureInfo[i];if(s){var e=new t("lostpointercapture");e.pointerId=i,this.captureInfo[i]=void 0,document.removeEventListener("pointerup",this.implicitRelease),document.removeEventListener("pointercancel",this.implicitRelease),e._target=s,this.asyncDispatchEvent(e)}},dispatchEvent:function(t){var i=this.getTarget(t);if(i)return i.dispatchEvent(t)},asyncDispatchEvent:function(t){requestAnimationFrame(this.dispatchEvent.bind(this,t))}};x.boundHandler=x.eventHandler.bind(x);var f={shadow:function(t){if(t)return t.shadowRoot||t.webkitShadowRoot},canTarget:function(t){return t&&Boolean(t.elementFromPoint)},targetingShadow:function(t){var i=this.shadow(t);if(this.canTarget(i))return i},olderShadow:function(t){var i=t.olderShadowRoot;if(!i){var s=t.querySelector("shadow");s&&(i=s.olderShadowRoot)}return i},allShadows:function(t){for(var i=[],s=this.shadow(t);s;)i.push(s),s=this.olderShadow(s);return i},searchRoot:function(t,i,s){if(t){var e,h,n=t.elementFromPoint(i,s);for(h=this.targetingShadow(n);h;){if(e=h.elementFromPoint(i,s)){var a=this.targetingShadow(e);return this.searchRoot(a,i,s)||e}h=this.olderShadow(h)}return n}},owner:function(t){for(var i=t;i.parentNode;)i=i.parentNode;return i.nodeType!==Node.DOCUMENT_NODE&&i.nodeType!==Node.DOCUMENT_FRAGMENT_NODE&&(i=document),i},findTarget:function(t){var i=t.clientX,s=t.clientY,e=this.owner(t.target);return e.elementFromPoint(i,s)||(e=document),this.searchRoot(e,i,s)}},v=Array.prototype.forEach.call.bind(Array.prototype.forEach),b=Array.prototype.map.call.bind(Array.prototype.map),z=Array.prototype.slice.call.bind(Array.prototype.slice),N=Array.prototype.filter.call.bind(Array.prototype.filter),g=window.MutationObserver||window.WebKitMutationObserver,w={subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0,attributeFilter:["touch-action"]};s.prototype={watchSubtree:function(t){this.observer&&f.canTarget(t)&&this.observer.observe(t,w)},enableOnSubtree:function(t){this.watchSubtree(t),t===document&&"complete"!==document.readyState?this.installOnLoad():this.installNewSubtree(t)},installNewSubtree:function(t){v(this.findElements(t),this.addElement,this)},findElements:function(t){return t.querySelectorAll?t.querySelectorAll("[touch-action]"):[]},removeElement:function(t){this.removeCallback(t)},addElement:function(t){this.addCallback(t)},elementChanged:function(t,i){this.changedCallback(t,i)},concatLists:function(t,i){return t.concat(z(i))},installOnLoad:function(){document.addEventListener("readystatechange",function(){"complete"===document.readyState&&this.installNewSubtree(document)}.bind(this))},isElement:function(t){return t.nodeType===Node.ELEMENT_NODE},flattenMutationTree:function(t){var i=b(t,this.findElements,this);return i.push(N(t,this.isElement)),i.reduce(this.concatLists,[])},mutationWatcher:function(t){t.forEach(this.mutationHandler,this)},mutationHandler:function(t){"childList"===t.type?(this.flattenMutationTree(t.addedNodes).forEach(this.addElement,this),this.flattenMutationTree(t.removedNodes).forEach(this.removeElement,this)):"attributes"===t.type&&this.elementChanged(t.target,t.oldValue)}};var k=["none","auto","pan-x","pan-y",{rule:"pan-x pan-y",selectors:["pan-x pan-y","pan-y pan-x"]}],M="",I=window.PointerEvent||window.MSPointerEvent,S=!window.ShadowDOMPolyfill&&document.head.createShadowRoot,P=x.pointermap,T=[1,4,2,8,16],L=!1;try{L=1===new MouseEvent("test",{buttons:1}).buttons}catch(t){}var _,V={POINTER_ID:1,POINTER_TYPE:"mouse",events:["mousedown","mousemove","mouseup","mouseover","mouseout"],register:function(t){x.listen(t,this.events)},unregister:function(t){x.unlisten(t,this.events)},lastTouches:[],isEventSimulatedFromTouch:function(t){for(var i,s=this.lastTouches,e=t.clientX,h=t.clientY,n=0,a=s.length;n<a&&(i=s[n]);n++){var o=Math.abs(e-i.x),r=Math.abs(h-i.y);if(o<=25&&r<=25)return!0}},prepareEvent:function(t){var i=x.cloneEvent(t),s=i.preventDefault;return i.preventDefault=function(){t.preventDefault(),s()},i.pointerId=this.POINTER_ID,i.isPrimary=!0,i.pointerType=this.POINTER_TYPE,i},prepareButtonsForMove:function(t,i){var s=P.get(this.POINTER_ID);0!==i.which&&s?t.buttons=s.buttons:t.buttons=0,i.buttons=t.buttons},mousedown:function(t){if(!this.isEventSimulatedFromTouch(t)){var i=P.get(this.POINTER_ID),s=this.prepareEvent(t);L||(s.buttons=T[s.button],i&&(s.buttons|=i.buttons),t.buttons=s.buttons),P.set(this.POINTER_ID,t),i&&0!==i.buttons?x.move(s):x.down(s)}},mousemove:function(t){if(!this.isEventSimulatedFromTouch(t)){var i=this.prepareEvent(t);L||this.prepareButtonsForMove(i,t),i.button=-1,P.set(this.POINTER_ID,t),x.move(i)}},mouseup:function(t){if(!this.isEventSimulatedFromTouch(t)){var i=P.get(this.POINTER_ID),s=this.prepareEvent(t);if(!L){var e=T[s.button];s.buttons=i?i.buttons&~e:0,t.buttons=s.buttons}P.set(this.POINTER_ID,t),s.buttons&=~T[s.button],0===s.buttons?x.up(s):x.move(s)}},mouseover:function(t){if(!this.isEventSimulatedFromTouch(t)){var i=this.prepareEvent(t);L||this.prepareButtonsForMove(i,t),i.button=-1,P.set(this.POINTER_ID,t),x.enterOver(i)}},mouseout:function(t){if(!this.isEventSimulatedFromTouch(t)){var i=this.prepareEvent(t);L||this.prepareButtonsForMove(i,t),i.button=-1,x.leaveOut(i)}},cancel:function(t){var i=this.prepareEvent(t);x.cancel(i),this.deactivateMouse()},deactivateMouse:function(){P.delete(this.POINTER_ID)}},E=x.captureInfo,C=f.findTarget.bind(f),O=f.allShadows.bind(f),A=x.pointermap,D="touch-action",j={events:["touchstart","touchmove","touchend","touchcancel"],register:function(t){_.enableOnSubtree(t)},unregister:function(){},elementAdded:function(t){var i=t.getAttribute(D),s=this.touchActionToScrollType(i);s&&(t._scrollType=s,x.listen(t,this.events),O(t).forEach((function(t){t._scrollType=s,x.listen(t,this.events)}),this))},elementRemoved:function(t){t._scrollType=void 0,x.unlisten(t,this.events),O(t).forEach((function(t){t._scrollType=void 0,x.unlisten(t,this.events)}),this)},elementChanged:function(t,i){var s=t.getAttribute(D),e=this.touchActionToScrollType(s),h=this.touchActionToScrollType(i);e&&h?(t._scrollType=e,O(t).forEach((function(t){t._scrollType=e}),this)):h?this.elementRemoved(t):e&&this.elementAdded(t)},scrollTypes:{EMITTER:"none",XSCROLLER:"pan-x",YSCROLLER:"pan-y",SCROLLER:/^(?:pan-x pan-y)|(?:pan-y pan-x)|auto$/},touchActionToScrollType:function(t){var i=t,s=this.scrollTypes;return"none"===i?"none":i===s.XSCROLLER?"X":i===s.YSCROLLER?"Y":s.SCROLLER.exec(i)?"XY":void 0},POINTER_TYPE:"touch",firstTouch:null,isPrimaryTouch:function(t){return this.firstTouch===t.identifier},setPrimaryTouch:function(t){(0===A.size||1===A.size&&A.has(1))&&(this.firstTouch=t.identifier,this.firstXY={X:t.clientX,Y:t.clientY},this.scrolling=!1,this.cancelResetClickCount())},removePrimaryPointer:function(t){t.isPrimary&&(this.firstTouch=null,this.firstXY=null,this.resetClickCount())},clickCount:0,resetId:null,resetClickCount:function(){var t=function(){this.clickCount=0,this.resetId=null}.bind(this);this.resetId=setTimeout(t,200)},cancelResetClickCount:function(){this.resetId&&clearTimeout(this.resetId)},typeToButtons:function(t){var i=0;return"touchstart"!==t&&"touchmove"!==t||(i=1),i},touchToPointer:function(t){var i=this.currentTouchEvent,s=x.cloneEvent(t),e=s.pointerId=t.identifier+2;s.target=E[e]||C(s),s.bubbles=!0,s.cancelable=!0,s.detail=this.clickCount,s.button=0,s.buttons=this.typeToButtons(i.type),s.width=t.radiusX||t.webkitRadiusX||0,s.height=t.radiusY||t.webkitRadiusY||0,s.pressure=t.force||t.webkitForce||.5,s.isPrimary=this.isPrimaryTouch(t),s.pointerType=this.POINTER_TYPE,s.altKey=i.altKey,s.ctrlKey=i.ctrlKey,s.metaKey=i.metaKey,s.shiftKey=i.shiftKey;var h=this;return s.preventDefault=function(){h.scrolling=!1,h.firstXY=null,i.preventDefault()},s},processTouches:function(t,i){var s=t.changedTouches;this.currentTouchEvent=t;for(var e,h=0;h<s.length;h++)e=s[h],i.call(this,this.touchToPointer(e))},shouldScroll:function(t){if(this.firstXY){var i,s=t.currentTarget._scrollType;if("none"===s)i=!1;else if("XY"===s)i=!0;else{var e=t.changedTouches[0],h=s,n="Y"===s?"X":"Y";i=Math.abs(e["client"+h]-this.firstXY[h])>=Math.abs(e["client"+n]-this.firstXY[n])}return this.firstXY=null,i}},findTouch:function(t,i){for(var s,e=0,h=t.length;e<h&&(s=t[e]);e++)if(s.identifier===i)return!0},vacuumTouches:function(t){var i=t.touches;if(A.size>=i.length){var s=[];A.forEach((function(t,e){if(1!==e&&!this.findTouch(i,e-2)){var h=t.out;s.push(h)}}),this),s.forEach(this.cancelOut,this)}},touchstart:function(t){this.vacuumTouches(t),this.setPrimaryTouch(t.changedTouches[0]),this.dedupSynthMouse(t),this.scrolling||(this.clickCount++,this.processTouches(t,this.overDown))},overDown:function(t){A.set(t.pointerId,{target:t.target,out:t,outTarget:t.target}),x.enterOver(t),x.down(t)},touchmove:function(t){this.scrolling||(this.shouldScroll(t)?(this.scrolling=!0,this.touchcancel(t)):(t.preventDefault(),this.processTouches(t,this.moveOverOut)))},moveOverOut:function(t){var i=t,s=A.get(i.pointerId);if(s){var e=s.out,h=s.outTarget;x.move(i),e&&h!==i.target&&(e.relatedTarget=i.target,i.relatedTarget=h,e.target=h,i.target?(x.leaveOut(e),x.enterOver(i)):(i.target=h,i.relatedTarget=null,this.cancelOut(i))),s.out=i,s.outTarget=i.target}},touchend:function(t){this.dedupSynthMouse(t),this.processTouches(t,this.upOut)},upOut:function(t){this.scrolling||(x.up(t),x.leaveOut(t)),this.cleanUpPointer(t)},touchcancel:function(t){this.processTouches(t,this.cancelOut)},cancelOut:function(t){x.cancel(t),x.leaveOut(t),this.cleanUpPointer(t)},cleanUpPointer:function(t){A.delete(t.pointerId),this.removePrimaryPointer(t)},dedupSynthMouse:function(t){var i=V.lastTouches,s=t.changedTouches[0];if(this.isPrimaryTouch(s)){var e={x:s.clientX,y:s.clientY};i.push(e);var h=function(t,i){var s=t.indexOf(i);s>-1&&t.splice(s,1)}.bind(null,i,e);setTimeout(h,2500)}}};_=new s(j.elementAdded,j.elementRemoved,j.elementChanged,j);var R,F,B=x.pointermap,U=window.MSPointerEvent&&"number"==typeof window.MSPointerEvent.MSPOINTER_TYPE_MOUSE,q={events:["MSPointerDown","MSPointerMove","MSPointerUp","MSPointerOut","MSPointerOver","MSPointerCancel","MSGotPointerCapture","MSLostPointerCapture"],register:function(t){x.listen(t,this.events)},unregister:function(t){x.unlisten(t,this.events)},POINTER_TYPES:["","unavailable","touch","pen","mouse"],prepareEvent:function(t){var i=t;return U&&((i=x.cloneEvent(t)).pointerType=this.POINTER_TYPES[t.pointerType]),i},cleanup:function(t){B.delete(t)},MSPointerDown:function(t){B.set(t.pointerId,t);var i=this.prepareEvent(t);x.down(i)},MSPointerMove:function(t){var i=this.prepareEvent(t);x.move(i)},MSPointerUp:function(t){var i=this.prepareEvent(t);x.up(i),this.cleanup(t.pointerId)},MSPointerOut:function(t){var i=this.prepareEvent(t);x.leaveOut(i)},MSPointerOver:function(t){var i=this.prepareEvent(t);x.enterOver(i)},MSPointerCancel:function(t){var i=this.prepareEvent(t);x.cancel(i),this.cleanup(t.pointerId)},MSLostPointerCapture:function(t){var i=x.makeEvent("lostpointercapture",t);x.dispatchEvent(i)},MSGotPointerCapture:function(t){var i=x.makeEvent("gotpointercapture",t);x.dispatchEvent(i)}};return window.navigator.msPointerEnabled?(R=function(t){a(t),o(this),r(t)&&this.msSetPointerCapture(t)},F=function(t){a(t),this.msReleasePointerCapture(t)}):(R=function(t){a(t),o(this),r(t)&&x.setCapture(t,this)},F=function(t){a(t),x.releaseCapture(t,this)}),function(){if(I){k.forEach((function(t){String(t)===t?(M+=h(t)+n(t)+"\n",S&&(M+=e(t)+n(t)+"\n")):(M+=t.selectors.map(h)+n(t.rule)+"\n",S&&(M+=t.selectors.map(e)+n(t.rule)+"\n"))}));var t=document.createElement("style");t.textContent=M,document.head.appendChild(t)}}(),function(){if(!window.PointerEvent){if(window.PointerEvent=t,window.navigator.msPointerEnabled){var i=window.navigator.msMaxTouchPoints;Object.defineProperty(window.navigator,"maxTouchPoints",{value:i,enumerable:!0}),x.registerSource("ms",q)}else x.registerSource("mouse",V),void 0!==window.ontouchstart&&x.registerSource("touch",j);x.register(document)}}(),window.Element&&!Element.prototype.setPointerCapture&&Object.defineProperties(Element.prototype,{setPointerCapture:{value:R},releasePointerCapture:{value:F}}),{dispatcher:x,Installer:s,PointerEvent:t,PointerMap:u,targetFinding:f}}));var _Group=function(){this._tweens={},this._tweensAddedDuringUpdate={}};_Group.prototype={getAll:function(){return Object.keys(this._tweens).map(function(t){return this._tweens[t]}.bind(this))},removeAll:function(){this._tweens={}},add:function(t){this._tweens[t.getId()]=t,this._tweensAddedDuringUpdate[t.getId()]=t},remove:function(t){delete this._tweens[t.getId()],delete this._tweensAddedDuringUpdate[t.getId()]},update:function(t,i){var s=Object.keys(this._tweens);if(0===s.length)return!1;for(t=void 0!==t?t:TWEEN.now();s.length>0;){this._tweensAddedDuringUpdate={};for(var e=0;e<s.length;e++){var h=this._tweens[s[e]];h&&!1===h.update(t)&&(h._isPlaying=!1,i||delete this._tweens[s[e]])}s=Object.keys(this._tweensAddedDuringUpdate)}return!0}};var TWEEN=new _Group;TWEEN.Group=_Group,TWEEN._nextId=0,TWEEN.nextId=function(){return TWEEN._nextId++},"undefined"==typeof self&&"undefined"!=typeof process&&process.hrtime?TWEEN.now=function(){var t=process.hrtime();return 1e3*t[0]+t[1]/1e6}:"undefined"!=typeof self&&void 0!==self.performance&&void 0!==self.performance.now?TWEEN.now=self.performance.now.bind(self.performance):void 0!==Date.now?TWEEN.now=Date.now:TWEEN.now=function(){return(new Date).getTime()},TWEEN.Tween=function(t,i){this._object=t,this._valuesStart={},this._valuesEnd={},this._valuesStartRepeat={},this._duration=1e3,this._repeat=0,this._repeatDelayTime=void 0,this._yoyo=!1,this._isPlaying=!1,this._reversed=!1,this._delayTime=0,this._startTime=null,this._easingFunction=TWEEN.Easing.Linear.None,this._interpolationFunction=TWEEN.Interpolation.Linear,this._chainedTweens=[],this._onStartCallback=null,this._onStartCallbackFired=!1,this._onUpdateCallback=null,this._onRepeatCallback=null,this._onCompleteCallback=null,this._onStopCallback=null,this._group=i||TWEEN,this._id=TWEEN.nextId()},TWEEN.Tween.prototype={getId:function(){return this._id},isPlaying:function(){return this._isPlaying},to:function(t,i){return this._valuesEnd=t,void 0!==i&&(this._duration=i),this},duration:function(t){return this._duration=t,this},start:function(t){for(var i in this._group.add(this),this._isPlaying=!0,this._onStartCallbackFired=!1,this._startTime=void 0!==t?"string"==typeof t?TWEEN.now()+parseFloat(t):t:TWEEN.now(),this._startTime+=this._delayTime,this._valuesEnd){if(this._valuesEnd[i]instanceof Array){if(0===this._valuesEnd[i].length)continue;this._valuesEnd[i]=[this._object[i]].concat(this._valuesEnd[i])}void 0!==this._object[i]&&(this._valuesStart[i]=this._object[i],this._valuesStart[i]instanceof Array==!1&&(this._valuesStart[i]*=1),this._valuesStartRepeat[i]=this._valuesStart[i]||0)}return this},stop:function(){return this._isPlaying?(this._group.remove(this),this._isPlaying=!1,null!==this._onStopCallback&&this._onStopCallback(this._object),this.stopChainedTweens(),this):this},end:function(){return this.update(1/0),this},stopChainedTweens:function(){for(var t=0,i=this._chainedTweens.length;t<i;t++)this._chainedTweens[t].stop()},group:function(t){return this._group=t,this},delay:function(t){return this._delayTime=t,this},repeat:function(t){return this._repeat=t,this},repeatDelay:function(t){return this._repeatDelayTime=t,this},yoyo:function(t){return this._yoyo=t,this},easing:function(t){return this._easingFunction=t,this},interpolation:function(t){return this._interpolationFunction=t,this},chain:function(){return this._chainedTweens=arguments,this},onStart:function(t){return this._onStartCallback=t,this},onUpdate:function(t){return this._onUpdateCallback=t,this},onRepeat:function(t){return this._onRepeatCallback=t,this},onComplete:function(t){return this._onCompleteCallback=t,this},onStop:function(t){return this._onStopCallback=t,this},update:function(t){var i,s,e;if(t<this._startTime)return!0;for(i in!1===this._onStartCallbackFired&&(null!==this._onStartCallback&&this._onStartCallback(this._object),this._onStartCallbackFired=!0),s=(t-this._startTime)/this._duration,s=0===this._duration||s>1?1:s,e=this._easingFunction(s),this._valuesEnd)if(void 0!==this._valuesStart[i]){var h=this._valuesStart[i]||0,n=this._valuesEnd[i];n instanceof Array?this._object[i]=this._interpolationFunction(n,e):("string"==typeof n&&(n="+"===n.charAt(0)||"-"===n.charAt(0)?h+parseFloat(n):parseFloat(n)),"number"==typeof n&&(this._object[i]=h+(n-h)*e))}if(null!==this._onUpdateCallback&&this._onUpdateCallback(this._object,s),1===s){if(this._repeat>0){for(i in isFinite(this._repeat)&&this._repeat--,this._valuesStartRepeat){if("string"==typeof this._valuesEnd[i]&&(this._valuesStartRepeat[i]=this._valuesStartRepeat[i]+parseFloat(this._valuesEnd[i])),this._yoyo){var a=this._valuesStartRepeat[i];this._valuesStartRepeat[i]=this._valuesEnd[i],this._valuesEnd[i]=a}this._valuesStart[i]=this._valuesStartRepeat[i]}return this._yoyo&&(this._reversed=!this._reversed),void 0!==this._repeatDelayTime?this._startTime=t+this._repeatDelayTime:this._startTime=t+this._delayTime,null!==this._onRepeatCallback&&this._onRepeatCallback(this._object),!0}null!==this._onCompleteCallback&&this._onCompleteCallback(this._object);for(var o=0,r=this._chainedTweens.length;o<r;o++)this._chainedTweens[o].start(this._startTime+this._duration);return!1}return!0}},TWEEN.Easing={Linear:{None:function(t){return t}},Quadratic:{In:function(t){return t*t},Out:function(t){return t*(2-t)},InOut:function(t){return(t*=2)<1?.5*t*t:-.5*(--t*(t-2)-1)}},Cubic:{In:function(t){return t*t*t},Out:function(t){return--t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t:.5*((t-=2)*t*t+2)}},Quartic:{In:function(t){return t*t*t*t},Out:function(t){return 1- --t*t*t*t},InOut:function(t){return(t*=2)<1?.5*t*t*t*t:-.5*((t-=2)*t*t*t-2)}},Quintic:{In:function(t){return t*t*t*t*t},Out:function(t){return--t*t*t*t*t+1},InOut:function(t){return(t*=2)<1?.5*t*t*t*t*t:.5*((t-=2)*t*t*t*t+2)}},Sinusoidal:{In:function(t){return 1-Math.cos(t*Math.PI/2)},Out:function(t){return Math.sin(t*Math.PI/2)},InOut:function(t){return.5*(1-Math.cos(Math.PI*t))}},Exponential:{In:function(t){return 0===t?0:Math.pow(1024,t-1)},Out:function(t){return 1===t?1:1-Math.pow(2,-10*t)},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?.5*Math.pow(1024,t-1):.5*(2-Math.pow(2,-10*(t-1)))}},Circular:{In:function(t){return 1-Math.sqrt(1-t*t)},Out:function(t){return Math.sqrt(1- --t*t)},InOut:function(t){return(t*=2)<1?-.5*(Math.sqrt(1-t*t)-1):.5*(Math.sqrt(1-(t-=2)*t)+1)}},Elastic:{In:function(t){return 0===t?0:1===t?1:-Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)},Out:function(t){return 0===t?0:1===t?1:Math.pow(2,-10*t)*Math.sin(5*(t-.1)*Math.PI)+1},InOut:function(t){return 0===t?0:1===t?1:(t*=2)<1?-.5*Math.pow(2,10*(t-1))*Math.sin(5*(t-1.1)*Math.PI):.5*Math.pow(2,-10*(t-1))*Math.sin(5*(t-1.1)*Math.PI)+1}},Back:{In:function(t){var i=1.70158;return t*t*((i+1)*t-i)},Out:function(t){var i=1.70158;return--t*t*((i+1)*t+i)+1},InOut:function(t){var i=2.5949095;return(t*=2)<1?t*t*((i+1)*t-i)*.5:.5*((t-=2)*t*((i+1)*t+i)+2)}},Bounce:{In:function(t){return 1-TWEEN.Easing.Bounce.Out(1-t)},Out:function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375},InOut:function(t){return t<.5?.5*TWEEN.Easing.Bounce.In(2*t):.5*TWEEN.Easing.Bounce.Out(2*t-1)+.5}}},TWEEN.Interpolation={Linear:function(t,i){var s=t.length-1,e=s*i,h=Math.floor(e),n=TWEEN.Interpolation.Utils.Linear;return i<0?n(t[0],t[1],e):i>1?n(t[s],t[s-1],s-e):n(t[h],t[h+1>s?s:h+1],e-h)},Bezier:function(t,i){for(var s=0,e=t.length-1,h=Math.pow,n=TWEEN.Interpolation.Utils.Bernstein,a=0;a<=e;a++)s+=h(1-i,e-a)*h(i,a)*t[a]*n(e,a);return s},CatmullRom:function(t,i){var s=t.length-1,e=s*i,h=Math.floor(e),n=TWEEN.Interpolation.Utils.CatmullRom;return t[0]===t[s]?(i<0&&(h=Math.floor(e=s*(1+i))),n(t[(h-1+s)%s],t[h],t[(h+1)%s],t[(h+2)%s],e-h)):i<0?t[0]-(n(t[0],t[0],t[1],t[1],-e)-t[0]):i>1?t[s]-(n(t[s],t[s],t[s-1],t[s-1],e-s)-t[s]):n(t[h?h-1:0],t[h],t[s<h+1?s:h+1],t[s<h+2?s:h+2],e-h)},Utils:{Linear:function(t,i,s){return(i-t)*s+t},Bernstein:function(t,i){var s=TWEEN.Interpolation.Utils.Factorial;return s(t)/s(i)/s(t-i)},Factorial:function(){var t=[1];return function(i){var s=1;if(t[i])return t[i];for(var e=i;e>1;e--)s*=e;return t[i]=s,s}}(),CatmullRom:function(t,i,s,e,h){var n=.5*(s-t),a=.5*(e-i),o=h*h;return(2*i-2*s+n+a)*(h*o)+(-3*i+3*s-2*n-a)*o+n*h+i}}},function(t){"function"==typeof define&&define.amd?define([],(function(){return TWEEN})):"undefined"!=typeof module&&"object"==typeof exports?module.exports=TWEEN:void 0!==t&&(t.TWEEN=TWEEN)}(this),function(t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).earcut=t()}((function(){return function t(i,s,e){function h(a,o){if(!s[a]){if(!i[a]){var r="function"==typeof require&&require;if(!o&&r)return r(a,!0);if(n)return n(a,!0);var l=new Error("Cannot find module '"+a+"'");throw l.code="MODULE_NOT_FOUND",l}var c=s[a]={exports:{}};i[a][0].call(c.exports,(function(t){return h(i[a][1][t]||t)}),c,c.exports,t,i,s,e)}return s[a].exports}for(var n="function"==typeof require&&require,a=0;a<e.length;a++)h(e[a]);return h}({1:[function(t,i,s){"use strict";function e(t,i,s){s=s||2;var e,o,r,l,c,m,y,x=i&&i.length,f=x?i[0]*s:t.length,v=h(t,0,f,s,!0),b=[];if(!v||v.next===v.prev)return b;if(x&&(v=function(t,i,s,e){var a,o,r,l=[];for(a=0,o=i.length;a<o;a++)(r=h(t,i[a]*e,a<o-1?i[a+1]*e:t.length,e,!1))===r.next&&(r.steiner=!0),l.push(d(r));for(l.sort(u),a=0;a<l.length;a++)p(l[a],s),s=n(s,s.next);return s}(t,i,v,s)),t.length>80*s){e=r=t[0],o=l=t[1];for(var z=s;z<f;z+=s)(c=t[z])<e&&(e=c),(m=t[z+1])<o&&(o=m),r<c&&(r=c),l<m&&(l=m);y=0!==(y=Math.max(r-e,l-o))?1/y:0}return a(v,b,s,e,o,y),b}function h(t,i,s,e,h){var n,a;if(h===0<I(t,i,s,e))for(n=i;n<s;n+=e)a=w(n,t[n],t[n+1],a);else for(n=s-e;i<=n;n-=e)a=w(n,t[n],t[n+1],a);return a&&f(a,a.next)&&(k(a),a=a.next),a}function n(t,i){if(!t)return t;i=i||t;var s,e=t;do{if(s=!1,e.steiner||!f(e,e.next)&&0!==x(e.prev,e,e.next))e=e.next;else{if(k(e),(e=i=e.prev)===e.next)break;s=!0}}while(s||e!==i);return i}function a(t,i,s,e,h,u,p){if(t){!p&&u&&function(t,i,s,e){for(var h=t;null===h.z&&(h.z=m(h.x,h.y,i,s,e)),h.prevZ=h.prev,h.nextZ=h.next,(h=h.next)!==t;);h.prevZ.nextZ=null,h.prevZ=null,function(t){var i,s,e,h,n,a,o,r,l=1;do{for(s=t,n=t=null,a=0;s;){for(a++,e=s,i=o=0;i<l&&(o++,e=e.nextZ);i++);for(r=l;0<o||0<r&&e;)0!==o&&(0===r||!e||s.z<=e.z)?(s=(h=s).nextZ,o--):(e=(h=e).nextZ,r--),n?n.nextZ=h:t=h,h.prevZ=n,n=h;s=e}n.nextZ=null,l*=2}while(1<a)}(h)}(t,e,h,u);for(var d,y,x=t;t.prev!==t.next;)if(d=t.prev,y=t.next,u?r(t,e,h,u):o(t))i.push(d.i/s),i.push(t.i/s),i.push(y.i/s),k(t),t=y.next,x=y.next;else if((t=y)===x){p?1===p?a(t=l(n(t),i,s),i,s,e,h,u,2):2===p&&c(t,i,s,e,h,u):a(n(t),i,s,e,h,u,1);break}}}function o(t){var i=t.prev,s=t,e=t.next;if(!(0<=x(i,s,e))){for(var h=t.next.next;h!==t.prev;){if(y(i.x,i.y,s.x,s.y,e.x,e.y,h.x,h.y)&&0<=x(h.prev,h,h.next))return;h=h.next}return 1}}function r(t,i,s,e){var h=t.prev,n=t,a=t.next;if(!(0<=x(h,n,a))){for(var o=h.x<n.x?h.x<a.x?h.x:a.x:n.x<a.x?n.x:a.x,r=h.y<n.y?h.y<a.y?h.y:a.y:n.y<a.y?n.y:a.y,l=h.x>n.x?h.x>a.x?h.x:a.x:n.x>a.x?n.x:a.x,c=h.y>n.y?h.y>a.y?h.y:a.y:n.y>a.y?n.y:a.y,u=m(o,r,i,s,e),p=m(l,c,i,s,e),d=t.prevZ,f=t.nextZ;d&&d.z>=u&&f&&f.z<=p;){if(d!==t.prev&&d!==t.next&&y(h.x,h.y,n.x,n.y,a.x,a.y,d.x,d.y)&&0<=x(d.prev,d,d.next))return;if(d=d.prevZ,f!==t.prev&&f!==t.next&&y(h.x,h.y,n.x,n.y,a.x,a.y,f.x,f.y)&&0<=x(f.prev,f,f.next))return;f=f.nextZ}for(;d&&d.z>=u;){if(d!==t.prev&&d!==t.next&&y(h.x,h.y,n.x,n.y,a.x,a.y,d.x,d.y)&&0<=x(d.prev,d,d.next))return;d=d.prevZ}for(;f&&f.z<=p;){if(f!==t.prev&&f!==t.next&&y(h.x,h.y,n.x,n.y,a.x,a.y,f.x,f.y)&&0<=x(f.prev,f,f.next))return;f=f.nextZ}return 1}}function l(t,i,s){var e=t;do{var h=e.prev,a=e.next.next;!f(h,a)&&v(h,e,e.next,a)&&N(h,a)&&N(a,h)&&(i.push(h.i/s),i.push(e.i/s),i.push(a.i/s),k(e),k(e.next),e=t=a),e=e.next}while(e!==t);return n(e)}function c(t,i,s,e,h,o){var r,l,c=t;do{for(var u=c.next.next;u!==c.prev;){if(c.i!==u.i&&(l=u,(r=c).next.i!==l.i&&r.prev.i!==l.i&&!function(t,i){var s=t;do{if(s.i!==t.i&&s.next.i!==t.i&&s.i!==i.i&&s.next.i!==i.i&&v(s,s.next,t,i))return 1;s=s.next}while(s!==t)}(r,l)&&(N(r,l)&&N(l,r)&&function(t,i){for(var s=t,e=!1,h=(t.x+i.x)/2,n=(t.y+i.y)/2;s.y>n!=s.next.y>n&&s.next.y!==s.y&&h<(s.next.x-s.x)*(n-s.y)/(s.next.y-s.y)+s.x&&(e=!e),(s=s.next)!==t;);return e}(r,l)&&(x(r.prev,r,l.prev)||x(r,l.prev,l))||f(r,l)&&0<x(r.prev,r,r.next)&&0<x(l.prev,l,l.next)))){var p=g(c,u);return c=n(c,c.next),p=n(p,p.next),a(c,i,s,e,h,o),void a(p,i,s,e,h,o)}u=u.next}c=c.next}while(c!==t)}function u(t,i){return t.x-i.x}function p(t,i){if(i=function(t,i){var s,e=i,h=t.x,n=t.y,a=-1/0;do{if(n<=e.y&&n>=e.next.y&&e.next.y!==e.y){var o=e.x+(n-e.y)*(e.next.x-e.x)/(e.next.y-e.y);if(o<=h&&a<o){if((a=o)===h){if(n===e.y)return e;if(n===e.next.y)return e.next}s=e.x<e.next.x?e:e.next}}e=e.next}while(e!==i);if(!s)return null;if(h===a)return s;var r,l,c,u=s,p=s.x,m=s.y,d=1/0;for(e=s;h>=e.x&&e.x>=p&&h!==e.x&&y(n<m?h:a,n,p,m,n<m?a:h,n,e.x,e.y)&&(r=Math.abs(n-e.y)/(h-e.x),N(e,t)&&(r<d||r===d&&(e.x>s.x||e.x===s.x&&(c=e,x((l=s).prev,l,c.prev)<0&&x(c.next,l,l.next)<0)))&&(s=e,d=r)),(e=e.next)!==u;);return s}(t,i)){var s=g(i,t);n(i,i.next),n(s,s.next)}}function m(t,i,s,e,h){return(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=32767*(t-s)*h)|t<<8))|t<<4))|t<<2))|t<<1))|(i=1431655765&((i=858993459&((i=252645135&((i=16711935&((i=32767*(i-e)*h)|i<<8))|i<<4))|i<<2))|i<<1))<<1}function d(t){for(var i=t,s=t;(i.x<s.x||i.x===s.x&&i.y<s.y)&&(s=i),(i=i.next)!==t;);return s}function y(t,i,s,e,h,n,a,o){return 0<=(h-a)*(i-o)-(t-a)*(n-o)&&0<=(t-a)*(e-o)-(s-a)*(i-o)&&0<=(s-a)*(n-o)-(h-a)*(e-o)}function x(t,i,s){return(i.y-t.y)*(s.x-i.x)-(i.x-t.x)*(s.y-i.y)}function f(t,i){return t.x===i.x&&t.y===i.y}function v(t,i,s,e){var h=z(x(t,i,s)),n=z(x(t,i,e)),a=z(x(s,e,t)),o=z(x(s,e,i));return h!==n&&a!==o||0===h&&b(t,s,i)||0===n&&b(t,e,i)||0===a&&b(s,t,e)||!(0!==o||!b(s,i,e))}function b(t,i,s){return i.x<=Math.max(t.x,s.x)&&i.x>=Math.min(t.x,s.x)&&i.y<=Math.max(t.y,s.y)&&i.y>=Math.min(t.y,s.y)}function z(t){return 0<t?1:t<0?-1:0}function N(t,i){return x(t.prev,t,t.next)<0?0<=x(t,i,t.next)&&0<=x(t,t.prev,i):x(t,i,t.prev)<0||x(t,t.next,i)<0}function g(t,i){var s=new M(t.i,t.x,t.y),e=new M(i.i,i.x,i.y),h=t.next,n=i.prev;return(t.next=i).prev=t,(s.next=h).prev=s,(e.next=s).prev=e,(n.next=e).prev=n,e}function w(t,i,s,e){var h=new M(t,i,s);return e?(h.next=e.next,(h.prev=e).next.prev=h,e.next=h):(h.prev=h).next=h,h}function k(t){t.next.prev=t.prev,t.prev.next=t.next,t.prevZ&&(t.prevZ.nextZ=t.nextZ),t.nextZ&&(t.nextZ.prevZ=t.prevZ)}function M(t,i,s){this.i=t,this.x=i,this.y=s,this.prev=null,this.next=null,this.z=null,this.prevZ=null,this.nextZ=null,this.steiner=!1}function I(t,i,s,e){for(var h=0,n=i,a=s-e;n<s;n+=e)h+=(t[a]-t[n])*(t[n+1]+t[a+1]),a=n;return h}i.exports=e,(i.exports.default=e).deviation=function(t,i,s,e){var h=i&&i.length,n=h?i[0]*s:t.length,a=Math.abs(I(t,0,n,s));if(h)for(var o=0,r=i.length;o<r;o++){var l=i[o]*s,c=o<r-1?i[o+1]*s:t.length;a-=Math.abs(I(t,l,c,s))}var u=0;for(o=0;o<e.length;o+=3){var p=e[o]*s,m=e[o+1]*s,d=e[o+2]*s;u+=Math.abs((t[p]-t[d])*(t[1+m]-t[1+p])-(t[p]-t[m])*(t[1+d]-t[1+p]))}return 0===a&&0===u?0:Math.abs((u-a)/a)},e.flatten=function(t){for(var i=t[0][0].length,s={vertices:[],holes:[],dimensions:i},e=0,h=0;h<t.length;h++){for(var n=0;n<t[h].length;n++)for(var a=0;a<i;a++)s.vertices.push(t[h][n][a]);0<h&&(e+=t[h-1].length,s.holes.push(e))}return s}},{}]},{},[1])(1)})),function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i((t=t||self).OIMO={})}(this,(function(t){"use strict";void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,-52)),void 0===Math.sign&&(Math.sign=function(t){return t<0?-1:t>0?1:+t}),void 0===Function.prototype.name&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var i=Object(t),s=1;s<arguments.length;s++){var e=arguments[s];if(null!=e)for(var h in e)Object.prototype.hasOwnProperty.call(e,h)&&(i[h]=e[h])}return i});var s,e,h,n,a="1.0.9",o=0,r=1,l=2,c=3,u=0,p=0,m={sqrt:Math.sqrt,abs:Math.abs,floor:Math.floor,cos:Math.cos,sin:Math.sin,acos:Math.acos,asin:Math.asin,atan2:Math.atan2,round:Math.round,pow:Math.pow,max:Math.max,min:Math.min,random:Math.random,degtorad:.017453292519943295,radtodeg:57.29577951308232,PI:3.141592653589793,TwoPI:6.283185307179586,PI90:1.570796326794896,PI270:4.712388980384689,INF:1/0,EPZ:1e-5,EPZ2:1e-6,lerp:function(t,i,s){return(1-s)*t+s*i},randInt:function(t,i){return t+m.floor(m.random()*(i-t+1))},rand:function(t,i){return t+m.random()*(i-t)},generateUUID:(e="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),h=new Array(36),n=0,function(){for(var t=0;t<36;t++)8===t||13===t||18===t||23===t?h[t]="-":14===t?h[t]="4":(n<=2&&(n=33554432+16777216*Math.random()|0),s=15&n,n>>=4,h[t]=e[19===t?3&s|8:s]);return h.join("")}),int:function(t){return m.floor(t)},fix:function(t,i){return t.toFixed(i||3,10)},clamp:function(t,i,s){return m.max(i,m.min(s,t))},distance:function(t,i){var s=i[0]-t[0],e=i[1]-t[1],h=i[2]-t[2];return m.sqrt(s*s+e*e+h*h)},acosClamp:function(t){return t>1?0:t<-1?m.PI:m.acos(t)},distanceVector:function(t,i){var s=t.x-i.x,e=t.y-i.y,h=t.z-i.z;return s*s+e*e+h*h},dotVectors:function(t,i){return t.x*i.x+t.y*i.y+t.z*i.z}};function d(t,i){console.error("[OIMO] "+t+": "+i)}function y(t){this.parent=t,this.infos=new Float32Array(13),this.f=[0,0,0],this.times=[0,0,0,0],this.broadPhase=this.parent.broadPhaseType,this.version=a,this.fps=0,this.tt=0,this.broadPhaseTime=0,this.narrowPhaseTime=0,this.solvingTime=0,this.totalTime=0,this.updateTime=0,this.MaxBroadPhaseTime=0,this.MaxNarrowPhaseTime=0,this.MaxSolvingTime=0,this.MaxTotalTime=0,this.MaxUpdateTime=0}function x(t,i,s){this.x=t||0,this.y=i||0,this.z=s||0}function f(t,i,s,e){this.x=t||0,this.y=i||0,this.z=s||0,this.w=void 0!==e?e:1}function v(t,i,s,e,h,n,a,o,r){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("OIMO.Mat33: the constructor no longer reads arguments. use .set() instead.")}function b(t,i,s,e,h,n){this.elements=new Float32Array(6);var a=this.elements;a[0]=t||0,a[1]=s||0,a[2]=h||0,a[3]=i||0,a[4]=e||0,a[5]=n||0}Object.assign(y.prototype,{setTime:function(t){this.times[t||0]=performance.now()},resetMax:function(){this.MaxBroadPhaseTime=0,this.MaxNarrowPhaseTime=0,this.MaxSolvingTime=0,this.MaxTotalTime=0,this.MaxUpdateTime=0},calcBroadPhase:function(){this.setTime(2),this.broadPhaseTime=this.times[2]-this.times[1]},calcNarrowPhase:function(){this.setTime(3),this.narrowPhaseTime=this.times[3]-this.times[2]},calcEnd:function(){this.setTime(2),this.solvingTime=this.times[2]-this.times[1],this.totalTime=this.times[2]-this.times[0],this.updateTime=this.totalTime-(this.broadPhaseTime+this.narrowPhaseTime+this.solvingTime),100===this.tt&&this.resetMax(),this.tt>100&&(this.broadPhaseTime>this.MaxBroadPhaseTime&&(this.MaxBroadPhaseTime=this.broadPhaseTime),this.narrowPhaseTime>this.MaxNarrowPhaseTime&&(this.MaxNarrowPhaseTime=this.narrowPhaseTime),this.solvingTime>this.MaxSolvingTime&&(this.MaxSolvingTime=this.solvingTime),this.totalTime>this.MaxTotalTime&&(this.MaxTotalTime=this.totalTime),this.updateTime>this.MaxUpdateTime&&(this.MaxUpdateTime=this.updateTime)),this.upfps(),this.tt++,this.tt>500&&(this.tt=0)},upfps:function(){this.f[1]=Date.now(),this.f[1]-1e3>this.f[0]&&(this.f[0]=this.f[1],this.fps=this.f[2],this.f[2]=0),this.f[2]++},show:function(){return["Oimo.js "+this.version+"<br>",this.broadPhase+"<br><br>","FPS: "+this.fps+" fps<br><br>","rigidbody "+this.parent.numRigidBodies+"<br>","contact &nbsp;&nbsp;"+this.parent.numContacts+"<br>","ct-point &nbsp;"+this.parent.numContactPoints+"<br>","paircheck "+this.parent.broadPhase.numPairChecks+"<br>","island &nbsp;&nbsp;&nbsp;"+this.parent.numIslands+"<br><br>","Time in milliseconds<br><br>","broadphase &nbsp;"+m.fix(this.broadPhaseTime)+" | "+m.fix(this.MaxBroadPhaseTime)+"<br>","narrowphase "+m.fix(this.narrowPhaseTime)+" | "+m.fix(this.MaxNarrowPhaseTime)+"<br>","solving &nbsp;&nbsp;&nbsp;&nbsp;"+m.fix(this.solvingTime)+" | "+m.fix(this.MaxSolvingTime)+"<br>","total &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"+m.fix(this.totalTime)+" | "+m.fix(this.MaxTotalTime)+"<br>","updating &nbsp;&nbsp;&nbsp;"+m.fix(this.updateTime)+" | "+m.fix(this.MaxUpdateTime)+"<br>"].join("\n")},toArray:function(){return this.infos[0]=this.parent.broadPhase.types,this.infos[1]=this.parent.numRigidBodies,this.infos[2]=this.parent.numContacts,this.infos[3]=this.parent.broadPhase.numPairChecks,this.infos[4]=this.parent.numContactPoints,this.infos[5]=this.parent.numIslands,this.infos[6]=this.broadPhaseTime,this.infos[7]=this.narrowPhaseTime,this.infos[8]=this.solvingTime,this.infos[9]=this.updateTime,this.infos[10]=this.totalTime,this.infos[11]=this.fps,this.infos}}),Object.assign(x.prototype,{Vec3:!0,set:function(t,i,s){return this.x=t,this.y=i,this.z=s,this},add:function(t,i){return void 0!==i?this.addVectors(t,i):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addVectors:function(t,i){return this.x=t.x+i.x,this.y=t.y+i.y,this.z=t.z+i.z,this},addEqual:function(t){return this.x+=t.x,this.y+=t.y,this.z+=t.z,this},sub:function(t,i){return void 0!==i?this.subVectors(t,i):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subVectors:function(t,i){return this.x=t.x-i.x,this.y=t.y-i.y,this.z=t.z-i.z,this},subEqual:function(t){return this.x-=t.x,this.y-=t.y,this.z-=t.z,this},scale:function(t,i){return this.x=t.x*i,this.y=t.y*i,this.z=t.z*i,this},scaleEqual:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiply:function(t){return this.x*=t.x,this.y*=t.y,this.z*=t.z,this},addScaledVector:function(t,i){return this.x+=t.x*i,this.y+=t.y*i,this.z+=t.z*i,this},subScaledVector:function(t,i){return this.x-=t.x*i,this.y-=t.y*i,this.z-=t.z*i,this},cross:function(t,i){if(void 0!==i)return this.crossVectors(t,i);var s=this.x,e=this.y,h=this.z;return this.x=e*t.z-h*t.y,this.y=h*t.x-s*t.z,this.z=s*t.y-e*t.x,this},crossVectors:function(t,i){var s=t.x,e=t.y,h=t.z,n=i.x,a=i.y,o=i.z;return this.x=e*o-h*a,this.y=h*n-s*o,this.z=s*a-e*n,this},tangent:function(t){var i=t.x,s=t.y,e=t.z;return this.x=s*i-e*e,this.y=-e*s-i*i,this.z=i*e+s*s,this},invert:function(t){return this.x=-t.x,this.y=-t.y,this.z=-t.z,this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},addition:function(){return this.x+this.y+this.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return m.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},applyMatrix3:function(t,i){var s=this.x,e=this.y,h=this.z,n=t.elements;return i?(this.x=n[0]*s+n[1]*e+n[2]*h,this.y=n[3]*s+n[4]*e+n[5]*h,this.z=n[6]*s+n[7]*e+n[8]*h):(this.x=n[0]*s+n[3]*e+n[6]*h,this.y=n[1]*s+n[4]*e+n[7]*h,this.z=n[2]*s+n[5]*e+n[8]*h),this},applyQuaternion:function(t){var i=this.x,s=this.y,e=this.z,h=t.x,n=t.y,a=t.z,o=t.w,r=o*i+n*e-a*s,l=o*s+a*i-h*e,c=o*e+h*s-n*i,u=-h*i-n*s-a*e;return this.x=r*o+u*-h+l*-a-c*-n,this.y=l*o+u*-n+c*-h-r*-a,this.z=c*o+u*-a+r*-n-l*-h,this},testZero:function(){return 0!==this.x||0!==this.y||0!==this.z},testDiff:function(t){return!this.equals(t)},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},clone:function(){return new this.constructor(this.x,this.y,this.z)},toString:function(){return"Vec3["+this.x.toFixed(4)+", "+this.y.toFixed(4)+", "+this.z.toFixed(4)+"]"},multiplyScalar:function(t){return isFinite(t)?(this.x*=t,this.y*=t,this.z*=t):(this.x=0,this.y=0,this.z=0),this},divideScalar:function(t){return this.multiplyScalar(1/t)},normalize:function(){return this.divideScalar(this.length())},toArray:function(t,i){void 0===i&&(i=0),t[i]=this.x,t[i+1]=this.y,t[i+2]=this.z},fromArray:function(t,i){return void 0===i&&(i=0),this.x=t[i],this.y=t[i+1],this.z=t[i+2],this}}),Object.assign(f.prototype,{Quat:!0,set:function(t,i,s,e){return this.x=t,this.y=i,this.z=s,this.w=e,this},addTime:function(t,i){var s=t.x,e=t.y,h=t.z,n=this.w,a=this.x,o=this.y,r=this.z;return i*=.5,this.x+=i*(s*n+e*r-h*o),this.y+=i*(e*n+h*a-s*r),this.z+=i*(h*n+s*o-e*a),this.w+=i*(-s*a-e*o-h*r),this.normalize(),this},multiply:function(t,i){return void 0!==i?this.multiplyQuaternions(t,i):this.multiplyQuaternions(this,t)},multiplyQuaternions:function(t,i){var s=t.x,e=t.y,h=t.z,n=t.w,a=i.x,o=i.y,r=i.z,l=i.w;return this.x=s*l+n*a+e*r-h*o,this.y=e*l+n*o+h*a-s*r,this.z=h*l+n*r+s*o-e*a,this.w=n*l-s*a-e*o-h*r,this},setFromUnitVectors:function(t,i){var s=new x,e=t.dot(i)+1;return e<m.EPS2?(e=0,m.abs(t.x)>m.abs(t.z)?s.set(-t.y,t.x,0):s.set(0,-t.z,t.y)):s.crossVectors(t,i),this._x=s.x,this._y=s.y,this._z=s.z,this._w=e,this.normalize()},arc:function(t,i){var s=t.x,e=t.y,h=t.z,n=i.x,a=i.y,o=i.z,r=s*n+e*a+h*o;if(-1==r)return n=e*s-h*h,a=-h*e-s*s,o=s*h+e*e,r=1/m.sqrt(n*n+a*a+o*o),this.w=0,this.x=n*r,this.y=a*r,this.z=o*r,this;var l=e*o-h*a,c=h*n-s*o,u=s*a-e*n;return this.w=m.sqrt(.5*(1+r)),r=.5/this.w,this.x=l*r,this.y=c*r,this.z=u*r,this},normalize:function(){var t=this.length();return 0===t?this.set(0,0,0,1):(t=1/t,this.x=this.x*t,this.y=this.y*t,this.z=this.z*t,this.w=this.w*t),this},inverse:function(){return this.conjugate().normalize()},invert:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w,this.conjugate().normalize(),this},conjugate:function(){return this.x*=-1,this.y*=-1,this.z*=-1,this},length:function(){return m.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=t.w,this},clone:function(t){return new f(this.x,this.y,this.z,this.w)},testDiff:function(t){return!this.equals(t)},equals:function(t){return this.x===t.x&&this.y===t.y&&this.z===t.z&&this.w===t.w},toString:function(){return"Quat["+this.x.toFixed(4)+", ("+this.y.toFixed(4)+", "+this.z.toFixed(4)+", "+this.w.toFixed(4)+")]"},setFromEuler:function(t,i,s){var e=Math.cos(.5*t),h=Math.cos(.5*i),n=Math.cos(.5*s),a=Math.sin(.5*t),o=Math.sin(.5*i),r=Math.sin(.5*s);return this.x=a*h*n+e*o*r,this.y=e*o*n-a*h*r,this.z=e*h*r+a*o*n,this.w=e*h*n-a*o*r,this},setFromAxis:function(t,i){t.normalize(),i*=.5;var s=m.sin(i);return this.x=s*t.x,this.y=s*t.y,this.z=s*t.z,this.w=m.cos(i),this},setFromMat33:function(t){var i,s=t[0]+t[4]+t[8];if(s>0)i=m.sqrt(s+1),this.w=.5/i,i=.5/i,this.x=(t[5]-t[7])*i,this.y=(t[6]-t[2])*i,this.z=(t[1]-t[3])*i;else{var e=[],h=0;t[4]>t[0]&&(h=1),t[8]>t[3*h+h]&&(h=2);var n=(h+1)%3,a=(h+2)%3;i=m.sqrt(t[3*h+h]-t[3*n+n]-t[3*a+a]+1),e[h]=.5*fRoot,i=.5/fRoot,this.w=(t[3*n+a]-t[3*a+n])*i,e[n]=(t[3*n+h]+t[3*h+n])*i,e[a]=(t[3*a+h]+t[3*h+a])*i,this.x=e[1],this.y=e[2],this.z=e[3]}return this},toArray:function(t,i){t[i=i||0]=this.x,t[i+1]=this.y,t[i+2]=this.z,t[i+3]=this.w},fromArray:function(t,i){return i=i||0,this.set(t[i],t[i+1],t[i+2],t[i+3]),this}}),Object.assign(v.prototype,{Mat33:!0,set:function(t,i,s,e,h,n,a,o,r){var l=this.elements;return l[0]=t,l[1]=i,l[2]=s,l[3]=e,l[4]=h,l[5]=n,l[6]=a,l[7]=o,l[8]=r,this},add:function(t,i){if(void 0!==i)return this.addMatrixs(t,i);var s=this.elements,e=t.elements;return s[0]+=e[0],s[1]+=e[1],s[2]+=e[2],s[3]+=e[3],s[4]+=e[4],s[5]+=e[5],s[6]+=e[6],s[7]+=e[7],s[8]+=e[8],this},addMatrixs:function(t,i){var s=this.elements,e=t.elements,h=i.elements;return s[0]=e[0]+h[0],s[1]=e[1]+h[1],s[2]=e[2]+h[2],s[3]=e[3]+h[3],s[4]=e[4]+h[4],s[5]=e[5]+h[5],s[6]=e[6]+h[6],s[7]=e[7]+h[7],s[8]=e[8]+h[8],this},addEqual:function(t){var i=this.elements,s=t.elements;return i[0]+=s[0],i[1]+=s[1],i[2]+=s[2],i[3]+=s[3],i[4]+=s[4],i[5]+=s[5],i[6]+=s[6],i[7]+=s[7],i[8]+=s[8],this},sub:function(t,i){if(void 0!==i)return this.subMatrixs(t,i);var s=this.elements,e=t.elements;return s[0]-=e[0],s[1]-=e[1],s[2]-=e[2],s[3]-=e[3],s[4]-=e[4],s[5]-=e[5],s[6]-=e[6],s[7]-=e[7],s[8]-=e[8],this},subMatrixs:function(t,i){var s=this.elements,e=t.elements,h=i.elements;return s[0]=e[0]-h[0],s[1]=e[1]-h[1],s[2]=e[2]-h[2],s[3]=e[3]-h[3],s[4]=e[4]-h[4],s[5]=e[5]-h[5],s[6]=e[6]-h[6],s[7]=e[7]-h[7],s[8]=e[8]-h[8],this},subEqual:function(t){var i=this.elements,s=t.elements;return i[0]-=s[0],i[1]-=s[1],i[2]-=s[2],i[3]-=s[3],i[4]-=s[4],i[5]-=s[5],i[6]-=s[6],i[7]-=s[7],i[8]-=s[8],this},scale:function(t,i){var s=this.elements,e=t.elements;return s[0]=e[0]*i,s[1]=e[1]*i,s[2]=e[2]*i,s[3]=e[3]*i,s[4]=e[4]*i,s[5]=e[5]*i,s[6]=e[6]*i,s[7]=e[7]*i,s[8]=e[8]*i,this},scaleEqual:function(t){var i=this.elements;return i[0]*=t,i[1]*=t,i[2]*=t,i[3]*=t,i[4]*=t,i[5]*=t,i[6]*=t,i[7]*=t,i[8]*=t,this},multiplyMatrices:function(t,i,s){s&&(i=i.clone().transpose());var e=this.elements,h=t.elements,n=i.elements,a=h[0],o=h[3],r=h[6],l=h[1],c=h[4],u=h[7],p=h[2],m=h[5],d=h[8],y=n[0],x=n[3],f=n[6],v=n[1],b=n[4],z=n[7],N=n[2],g=n[5],w=n[8];return e[0]=a*y+l*x+p*f,e[1]=a*v+l*b+p*z,e[2]=a*N+l*g+p*w,e[3]=o*y+c*x+m*f,e[4]=o*v+c*b+m*z,e[5]=o*N+c*g+m*w,e[6]=r*y+u*x+d*f,e[7]=r*v+u*b+d*z,e[8]=r*N+u*g+d*w,this},transpose:function(t){if(void 0!==t){var i=t.elements;return this.set(i[0],i[3],i[6],i[1],i[4],i[7],i[2],i[5],i[8]),this}var s=this.elements,e=s[1],h=s[2],n=s[5];return s[1]=s[3],s[2]=s[6],s[3]=e,s[5]=s[7],s[6]=h,s[7]=n,this},setQuat:function(t){var i=this.elements,s=t.x,e=t.y,h=t.z,n=t.w,a=s+s,o=e+e,r=h+h,l=s*a,c=s*o,u=s*r,p=e*o,m=e*r,d=h*r,y=n*a,x=n*o,f=n*r;return i[0]=1-(p+d),i[1]=c-f,i[2]=u+x,i[3]=c+f,i[4]=1-(l+d),i[5]=m-y,i[6]=u-x,i[7]=m+y,i[8]=1-(l+p),this},invert:function(t){var i=this.elements,s=t.elements,e=s[0],h=s[3],n=s[6],a=s[1],o=s[4],r=s[7],l=s[2],c=s[5],u=s[8],p=u*o-c*r,m=-u*h+c*n,d=r*h-o*n,y=e*p+a*m+l*d;return 0===y?this.identity():(y=1/y,i[0]=p*y,i[1]=(-u*a+l*r)*y,i[2]=(c*a-l*o)*y,i[3]=m*y,i[4]=(u*e-l*n)*y,i[5]=(-c*e+l*h)*y,i[6]=d*y,i[7]=(-r*e+a*n)*y,i[8]=(o*e-a*h)*y,this)},addOffset:function(t,i){var s=i.x,e=i.y,h=i.z,n=this.elements;n[0]+=t*(e*e+h*h),n[4]+=t*(s*s+h*h),n[8]+=t*(s*s+e*e);var a=t*s*e,o=t*e*h,r=t*h*s;return n[1]-=a,n[3]-=a,n[2]-=o,n[6]-=o,n[5]-=r,n[7]-=r,this},subOffset:function(t,i){var s=i.x,e=i.y,h=i.z,n=this.elements;n[0]-=t*(e*e+h*h),n[4]-=t*(s*s+h*h),n[8]-=t*(s*s+e*e);var a=t*s*e,o=t*e*h,r=t*h*s;return n[1]+=a,n[3]+=a,n[2]+=o,n[6]+=o,n[5]+=r,n[7]+=r,this},multiplyScalar:function(t){var i=this.elements;return i[0]*=t,i[3]*=t,i[6]*=t,i[1]*=t,i[4]*=t,i[7]*=t,i[2]*=t,i[5]*=t,i[8]*=t,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new v).fromArray(this.elements)},copy:function(t){for(var i=0;i<9;i++)this.elements[i]=t.elements[i];return this},determinant:function(){var t=this.elements,i=t[0],s=t[1],e=t[2],h=t[3],n=t[4],a=t[5],o=t[6],r=t[7],l=t[8];return i*n*l-i*a*r-s*h*l+s*a*o+e*h*r-e*n*o},fromArray:function(t,i){void 0===i&&(i=0);for(var s=0;s<9;s++)this.elements[s]=t[s+i];return this},toArray:function(t,i){void 0===t&&(t=[]),void 0===i&&(i=0);var s=this.elements;return t[i]=s[0],t[i+1]=s[1],t[i+2]=s[2],t[i+3]=s[3],t[i+4]=s[4],t[i+5]=s[5],t[i+6]=s[6],t[i+7]=s[7],t[i+8]=s[8],t}}),Object.assign(b.prototype,{AABB:!0,set:function(t,i,s,e,h,n){var a=this.elements;return a[0]=t,a[3]=i,a[1]=s,a[4]=e,a[2]=h,a[5]=n,this},intersectTest:function(t){var i=this.elements,s=t.elements;return i[0]>s[3]||i[1]>s[4]||i[2]>s[5]||i[3]<s[0]||i[4]<s[1]||i[5]<s[2]},intersectTestTwo:function(t){var i=this.elements,s=t.elements;return i[0]<s[0]||i[1]<s[1]||i[2]<s[2]||i[3]>s[3]||i[4]>s[4]||i[5]>s[5]},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(t,i){var s=i||0,e=t.elements;return this.set(e[0]-s,e[3]+s,e[1]-s,e[4]+s,e[2]-s,e[5]+s),this},fromArray:function(t){return this.elements.set(t),this},combine:function(t,i){var s=t.elements,e=i.elements,h=this.elements;return h[0]=s[0]<e[0]?s[0]:e[0],h[1]=s[1]<e[1]?s[1]:e[1],h[2]=s[2]<e[2]?s[2]:e[2],h[3]=s[3]>e[3]?s[3]:e[3],h[4]=s[4]>e[4]?s[4]:e[4],h[5]=s[5]>e[5]?s[5]:e[5],this},surfaceArea:function(){var t=this.elements,i=t[3]-t[0],s=t[4]-t[1],e=t[5]-t[2];return 2*(i*(s+e)+s*e)},intersectsWithPoint:function(t,i,s){var e=this.elements;return t>=e[0]&&t<=e[3]&&i>=e[1]&&i<=e[4]&&s>=e[2]&&s<=e[5]},setFromPoints:function(t){this.makeEmpty();for(var i=0;i<t.length;i++)this.expandByPoint(t[i])},makeEmpty:function(){this.set(-1/0,-1/0,-1/0,1/0,1/0,1/0)},expandByPoint:function(t){var i=this.elements;this.set(m.min(i[0],t.x),m.min(i[1],t.y),m.min(i[2],t.z),m.max(i[3],t.x),m.max(i[4],t.y),m.max(i[5],t.z))},expandByScalar:function(t){var i=this.elements;i[0]+=-t,i[1]+=-t,i[2]+=-t,i[3]+=t,i[4]+=t,i[5]+=t}});var z=0;function N(t){this.type=u,this.id=z++,this.prev=null,this.next=null,this.proxy=null,this.parent=null,this.contactLink=null,this.numContacts=0,this.position=new x,this.rotation=new v,this.relativePosition=(new x).copy(t.relativePosition),this.relativeRotation=(new v).copy(t.relativeRotation),this.aabb=new b,this.density=t.density,this.friction=t.friction,this.restitution=t.restitution,this.belongsTo=t.belongsTo,this.collidesWith=t.collidesWith}function g(t,i,s,e){N.call(this,t),this.type=2,this.width=i,this.height=s,this.depth=e,this.halfWidth=.5*i,this.halfHeight=.5*s,this.halfDepth=.5*e,this.dimentions=new Float32Array(18),this.elements=new Float32Array(24)}function w(t,i){N.call(this,t),this.type=1,this.radius=i}function k(t,i,s){N.call(this,t),this.type=3,this.radius=i,this.height=s,this.halfHeight=.5*s,this.normalDirection=new x,this.halfDirection=new x}function M(t,i){N.call(this,t),this.type=4,this.normal=new x(0,1,0)}function I(t,i){N.call(this,t),this.type=5}function S(){this.relativePosition=new x,this.relativeRotation=new v,this.friction=.2,this.restitution=.2,this.density=1,this.belongsTo=1,this.collidesWith=4294967295}function P(t,i){i=i||!1,this.axis=t,this.angle=0,this.lowerLimit=i?0:1,this.upperLimit=0,this.motorSpeed=0,this.maxMotorForce=0,this.frequency=0,this.dampingRatio=0}function T(){this.parent=null,this.body1=null,this.body2=null,this.addedToIsland=!1}function L(t){this.prev=null,this.next=null,this.body=null,this.joint=t}function _(t){T.call(this),this.scale=1,this.invScale=1,this.name="",this.id=NaN,this.type=p,this.prev=null,this.next=null,this.body1=t.body1,this.body2=t.body2,this.localAnchorPoint1=(new x).copy(t.localAnchorPoint1),this.localAnchorPoint2=(new x).copy(t.localAnchorPoint2),this.relativeAnchorPoint1=new x,this.relativeAnchorPoint2=new x,this.anchorPoint1=new x,this.anchorPoint2=new x,this.allowCollision=t.allowCollision,this.b1Link=new L(this),this.b2Link=new L(this)}function V(t){this.m1=NaN,this.m2=NaN,this.ii1=null,this.ii2=null,this.dd=null,this.r1x=NaN,this.r1y=NaN,this.r1z=NaN,this.r2x=NaN,this.r2y=NaN,this.r2z=NaN,this.ax1x=NaN,this.ax1y=NaN,this.ax1z=NaN,this.ay1x=NaN,this.ay1y=NaN,this.ay1z=NaN,this.az1x=NaN,this.az1y=NaN,this.az1z=NaN,this.ax2x=NaN,this.ax2y=NaN,this.ax2z=NaN,this.ay2x=NaN,this.ay2y=NaN,this.ay2z=NaN,this.az2x=NaN,this.az2y=NaN,this.az2z=NaN,this.vel=NaN,this.velx=NaN,this.vely=NaN,this.velz=NaN,this.joint=t,this.r1=t.relativeAnchorPoint1,this.r2=t.relativeAnchorPoint2,this.p1=t.anchorPoint1,this.p2=t.anchorPoint2,this.b1=t.body1,this.b2=t.body2,this.l1=this.b1.linearVelocity,this.l2=this.b2.linearVelocity,this.a1=this.b1.angularVelocity,this.a2=this.b2.angularVelocity,this.i1=this.b1.inverseInertia,this.i2=this.b2.inverseInertia,this.impx=0,this.impy=0,this.impz=0}function E(t,i,s,e){this.cfm1=NaN,this.cfm2=NaN,this.cfm3=NaN,this.i1e00=NaN,this.i1e01=NaN,this.i1e02=NaN,this.i1e10=NaN,this.i1e11=NaN,this.i1e12=NaN,this.i1e20=NaN,this.i1e21=NaN,this.i1e22=NaN,this.i2e00=NaN,this.i2e01=NaN,this.i2e02=NaN,this.i2e10=NaN,this.i2e11=NaN,this.i2e12=NaN,this.i2e20=NaN,this.i2e21=NaN,this.i2e22=NaN,this.ax1=NaN,this.ay1=NaN,this.az1=NaN,this.ax2=NaN,this.ay2=NaN,this.az2=NaN,this.ax3=NaN,this.ay3=NaN,this.az3=NaN,this.a1x1=NaN,this.a1y1=NaN,this.a1z1=NaN,this.a2x1=NaN,this.a2y1=NaN,this.a2z1=NaN,this.a1x2=NaN,this.a1y2=NaN,this.a1z2=NaN,this.a2x2=NaN,this.a2y2=NaN,this.a2z2=NaN,this.a1x3=NaN,this.a1y3=NaN,this.a1z3=NaN,this.a2x3=NaN,this.a2y3=NaN,this.a2z3=NaN,this.lowerLimit1=NaN,this.upperLimit1=NaN,this.limitVelocity1=NaN,this.limitState1=0,this.enableMotor1=!1,this.motorSpeed1=NaN,this.maxMotorForce1=NaN,this.maxMotorImpulse1=NaN,this.lowerLimit2=NaN,this.upperLimit2=NaN,this.limitVelocity2=NaN,this.limitState2=0,this.enableMotor2=!1,this.motorSpeed2=NaN,this.maxMotorForce2=NaN,this.maxMotorImpulse2=NaN,this.lowerLimit3=NaN,this.upperLimit3=NaN,this.limitVelocity3=NaN,this.limitState3=0,this.enableMotor3=!1,this.motorSpeed3=NaN,this.maxMotorForce3=NaN,this.maxMotorImpulse3=NaN,this.k00=NaN,this.k01=NaN,this.k02=NaN,this.k10=NaN,this.k11=NaN,this.k12=NaN,this.k20=NaN,this.k21=NaN,this.k22=NaN,this.kv00=NaN,this.kv11=NaN,this.kv22=NaN,this.dv00=NaN,this.dv11=NaN,this.dv22=NaN,this.d00=NaN,this.d01=NaN,this.d02=NaN,this.d10=NaN,this.d11=NaN,this.d12=NaN,this.d20=NaN,this.d21=NaN,this.d22=NaN,this.limitMotor1=i,this.limitMotor2=s,this.limitMotor3=e,this.b1=t.body1,this.b2=t.body2,this.a1=this.b1.angularVelocity,this.a2=this.b2.angularVelocity,this.i1=this.b1.inverseInertia,this.i2=this.b2.inverseInertia,this.limitImpulse1=0,this.motorImpulse1=0,this.limitImpulse2=0,this.motorImpulse2=0,this.limitImpulse3=0,this.motorImpulse3=0}function C(t,i,s){_.call(this,t),this.type=3,this.localAxis1=t.localAxis1.clone().normalize(),this.localAxis2=t.localAxis2.clone().normalize();var e=(new v).setQuat((new f).setFromUnitVectors(this.localAxis1,this.localAxis2));this.localAngle1=(new x).tangent(this.localAxis1).normalize(),this.localAngle2=this.localAngle1.clone().applyMatrix3(e,!0),this.ax1=new x,this.ax2=new x,this.an1=new x,this.an2=new x,this.tmp=new x,this.nor=new x,this.tan=new x,this.bin=new x,this.limitMotor=new P(this.nor,!1),this.limitMotor.lowerLimit=i,this.limitMotor.upperLimit=s,this.lc=new V(this),this.r3=new E(this,this.limitMotor,new P(this.tan,!0),new P(this.bin,!0))}function O(t){_.call(this,t),this.type=2,this.lc=new V(this)}function A(t,i){this.cfm=NaN,this.m1=NaN,this.m2=NaN,this.i1e00=NaN,this.i1e01=NaN,this.i1e02=NaN,this.i1e10=NaN,this.i1e11=NaN,this.i1e12=NaN,this.i1e20=NaN,this.i1e21=NaN,this.i1e22=NaN,this.i2e00=NaN,this.i2e01=NaN,this.i2e02=NaN,this.i2e10=NaN,this.i2e11=NaN,this.i2e12=NaN,this.i2e20=NaN,this.i2e21=NaN,this.i2e22=NaN,this.motorDenom=NaN,this.invMotorDenom=NaN,this.invDenom=NaN,this.ax=NaN,this.ay=NaN,this.az=NaN,this.r1x=NaN,this.r1y=NaN,this.r1z=NaN,this.r2x=NaN,this.r2y=NaN,this.r2z=NaN,this.t1x=NaN,this.t1y=NaN,this.t1z=NaN,this.t2x=NaN,this.t2y=NaN,this.t2z=NaN,this.l1x=NaN,this.l1y=NaN,this.l1z=NaN,this.l2x=NaN,this.l2y=NaN,this.l2z=NaN,this.a1x=NaN,this.a1y=NaN,this.a1z=NaN,this.a2x=NaN,this.a2y=NaN,this.a2z=NaN,this.lowerLimit=NaN,this.upperLimit=NaN,this.limitVelocity=NaN,this.limitState=0,this.enableMotor=!1,this.motorSpeed=NaN,this.maxMotorForce=NaN,this.maxMotorImpulse=NaN,this.limitMotor=i,this.b1=t.body1,this.b2=t.body2,this.p1=t.anchorPoint1,this.p2=t.anchorPoint2,this.r1=t.relativeAnchorPoint1,this.r2=t.relativeAnchorPoint2,this.l1=this.b1.linearVelocity,this.l2=this.b2.linearVelocity,this.a1=this.b1.angularVelocity,this.a2=this.b2.angularVelocity,this.i1=this.b1.inverseInertia,this.i2=this.b2.inverseInertia,this.limitImpulse=0,this.motorImpulse=0}function D(t,i,s){_.call(this,t),this.type=1,this.nor=new x,this.limitMotor=new P(this.nor,!0),this.limitMotor.lowerLimit=i,this.limitMotor.upperLimit=s,this.t=new A(this,this.limitMotor)}function j(t,i){this.joint=t,this.targetOrientation=(new f).invert(i),this.relativeOrientation=new f,this.ii1=null,this.ii2=null,this.dd=null,this.vel=new x,this.imp=new x,this.rn0=new x,this.rn1=new x,this.rn2=new x,this.b1=t.body1,this.b2=t.body2,this.a1=this.b1.angularVelocity,this.a2=this.b2.angularVelocity,this.i1=this.b1.inverseInertia,this.i2=this.b2.inverseInertia}function R(t,i,s,e){this.m1=NaN,this.m2=NaN,this.i1e00=NaN,this.i1e01=NaN,this.i1e02=NaN,this.i1e10=NaN,this.i1e11=NaN,this.i1e12=NaN,this.i1e20=NaN,this.i1e21=NaN,this.i1e22=NaN,this.i2e00=NaN,this.i2e01=NaN,this.i2e02=NaN,this.i2e10=NaN,this.i2e11=NaN,this.i2e12=NaN,this.i2e20=NaN,this.i2e21=NaN,this.i2e22=NaN,this.ax1=NaN,this.ay1=NaN,this.az1=NaN,this.ax2=NaN,this.ay2=NaN,this.az2=NaN,this.ax3=NaN,this.ay3=NaN,this.az3=NaN,this.r1x=NaN,this.r1y=NaN,this.r1z=NaN,this.r2x=NaN,this.r2y=NaN,this.r2z=NaN,this.t1x1=NaN,this.t1y1=NaN,this.t1z1=NaN,this.t2x1=NaN,this.t2y1=NaN,this.t2z1=NaN,this.l1x1=NaN,this.l1y1=NaN,this.l1z1=NaN,this.l2x1=NaN,this.l2y1=NaN,this.l2z1=NaN,this.a1x1=NaN,this.a1y1=NaN,this.a1z1=NaN,this.a2x1=NaN,this.a2y1=NaN,this.a2z1=NaN,this.t1x2=NaN,this.t1y2=NaN,this.t1z2=NaN,this.t2x2=NaN,this.t2y2=NaN,this.t2z2=NaN,this.l1x2=NaN,this.l1y2=NaN,this.l1z2=NaN,this.l2x2=NaN,this.l2y2=NaN,this.l2z2=NaN,this.a1x2=NaN,this.a1y2=NaN,this.a1z2=NaN,this.a2x2=NaN,this.a2y2=NaN,this.a2z2=NaN,this.t1x3=NaN,this.t1y3=NaN,this.t1z3=NaN,this.t2x3=NaN,this.t2y3=NaN,this.t2z3=NaN,this.l1x3=NaN,this.l1y3=NaN,this.l1z3=NaN,this.l2x3=NaN,this.l2y3=NaN,this.l2z3=NaN,this.a1x3=NaN,this.a1y3=NaN,this.a1z3=NaN,this.a2x3=NaN,this.a2y3=NaN,this.a2z3=NaN,this.lowerLimit1=NaN,this.upperLimit1=NaN,this.limitVelocity1=NaN,this.limitState1=0,this.enableMotor1=!1,this.motorSpeed1=NaN,this.maxMotorForce1=NaN,this.maxMotorImpulse1=NaN,this.lowerLimit2=NaN,this.upperLimit2=NaN,this.limitVelocity2=NaN,this.limitState2=0,this.enableMotor2=!1,this.motorSpeed2=NaN,this.maxMotorForce2=NaN,this.maxMotorImpulse2=NaN,this.lowerLimit3=NaN,this.upperLimit3=NaN,this.limitVelocity3=NaN,this.limitState3=0,this.enableMotor3=!1,this.motorSpeed3=NaN,this.maxMotorForce3=NaN,this.maxMotorImpulse3=NaN,this.k00=NaN,this.k01=NaN,this.k02=NaN,this.k10=NaN,this.k11=NaN,this.k12=NaN,this.k20=NaN,this.k21=NaN,this.k22=NaN,this.kv00=NaN,this.kv11=NaN,this.kv22=NaN,this.dv00=NaN,this.dv11=NaN,this.dv22=NaN,this.d00=NaN,this.d01=NaN,this.d02=NaN,this.d10=NaN,this.d11=NaN,this.d12=NaN,this.d20=NaN,this.d21=NaN,this.d22=NaN,this.limitMotor1=i,this.limitMotor2=s,this.limitMotor3=e,this.b1=t.body1,this.b2=t.body2,this.p1=t.anchorPoint1,this.p2=t.anchorPoint2,this.r1=t.relativeAnchorPoint1,this.r2=t.relativeAnchorPoint2,this.l1=this.b1.linearVelocity,this.l2=this.b2.linearVelocity,this.a1=this.b1.angularVelocity,this.a2=this.b2.angularVelocity,this.i1=this.b1.inverseInertia,this.i2=this.b2.inverseInertia,this.limitImpulse1=0,this.motorImpulse1=0,this.limitImpulse2=0,this.motorImpulse2=0,this.limitImpulse3=0,this.motorImpulse3=0,this.cfm1=0,this.cfm2=0,this.cfm3=0,this.weight=-1}function F(t,i,s){_.call(this,t),this.type=6,this.localAxis1=t.localAxis1.clone().normalize(),this.localAxis2=t.localAxis2.clone().normalize(),this.ax1=new x,this.ax2=new x,this.nor=new x,this.tan=new x,this.bin=new x,this.ac=new j(this,(new f).setFromUnitVectors(this.localAxis1,this.localAxis2)),this.limitMotor=new P(this.nor,!0),this.limitMotor.lowerLimit=i,this.limitMotor.upperLimit=s,this.t3=new R(this,this.limitMotor,new P(this.tan,!0),new P(this.bin,!0))}function B(t,i,s){_.call(this,t),this.type=5,this.localAxis1=t.localAxis1.clone().normalize(),this.localAxis2=t.localAxis2.clone().normalize();var e=(new v).setQuat((new f).setFromUnitVectors(this.localAxis1,this.localAxis2));this.localAngle1=(new x).tangent(this.localAxis1).normalize(),this.localAngle2=this.localAngle1.clone().applyMatrix3(e,!0),this.ax1=new x,this.ax2=new x,this.an1=new x,this.an2=new x,this.tmp=new x,this.nor=new x,this.tan=new x,this.bin=new x,this.rotationalLimitMotor=new P(this.nor,!1),this.r3=new E(this,this.rotationalLimitMotor,new P(this.tan,!0),new P(this.bin,!0)),this.translationalLimitMotor=new P(this.nor,!0),this.translationalLimitMotor.lowerLimit=i,this.translationalLimitMotor.upperLimit=s,this.t3=new R(this,this.translationalLimitMotor,new P(this.tan,!0),new P(this.bin,!0))}function U(t){_.call(this,t),this.type=4,this.localAxis1=t.localAxis1.clone().normalize(),this.localAxis2=t.localAxis2.clone().normalize(),this.localAngle1=new x,this.localAngle2=new x;var i=m.dotVectors(this.localAxis1,this.localAxis2);if(i>-1&&i<1)this.localAngle1.set(this.localAxis2.x-i*this.localAxis1.x,this.localAxis2.y-i*this.localAxis1.y,this.localAxis2.z-i*this.localAxis1.z).normalize(),this.localAngle2.set(this.localAxis1.x-i*this.localAxis2.x,this.localAxis1.y-i*this.localAxis2.y,this.localAxis1.z-i*this.localAxis2.z).normalize();else{var s=(new v).setQuat((new f).setFromUnitVectors(this.localAxis1,this.localAxis2));this.localAngle1.tangent(this.localAxis1).normalize(),this.localAngle2=this.localAngle1.clone().applyMatrix3(s,!0)}this.ax1=new x,this.ax2=new x,this.an1=new x,this.an2=new x,this.tmp=new x,this.nor=new x,this.tan=new x,this.bin=new x,this.translationalLimitMotor=new P(this.tan,!0),this.translationalLimitMotor.frequency=8,this.translationalLimitMotor.dampingRatio=1,this.rotationalLimitMotor1=new P(this.tan,!1),this.rotationalLimitMotor2=new P(this.bin,!1),this.t3=new R(this,new P(this.nor,!0),this.translationalLimitMotor,new P(this.bin,!0)),this.t3.weight=1,this.r3=new E(this,new P(this.nor,!0),this.rotationalLimitMotor1,this.rotationalLimitMotor2)}function q(){this.scale=1,this.invScale=1,this.body1=null,this.body2=null,this.localAnchorPoint1=new x,this.localAnchorPoint2=new x,this.localAxis1=new x,this.localAxis2=new x,this.allowCollision=!1}function W(){this.mass=0,this.inertia=new v}function Y(t){this.prev=null,this.next=null,this.shape=null,this.body=null,this.contact=t}function X(){this.lp1X=NaN,this.lp1Y=NaN,this.lp1Z=NaN,this.lp2X=NaN,this.lp2Y=NaN,this.lp2Z=NaN,this.impulse=NaN}function H(){this.warmStarted=!1,this.position=new x,this.localPoint1=new x,this.localPoint2=new x,this.normal=new x,this.tangent=new x,this.binormal=new x,this.normalImpulse=0,this.tangentImpulse=0,this.binormalImpulse=0,this.normalDenominator=0,this.tangentDenominator=0,this.binormalDenominator=0,this.penetration=0}function Z(){this.body1=null,this.body2=null,this.numPoints=0,this.points=[new H,new H,new H,new H]}function J(){this.nor=new x,this.tan=new x,this.bin=new x,this.norU1=new x,this.tanU1=new x,this.binU1=new x,this.norU2=new x,this.tanU2=new x,this.binU2=new x,this.norT1=new x,this.tanT1=new x,this.binT1=new x,this.norT2=new x,this.tanT2=new x,this.binT2=new x,this.norTU1=new x,this.tanTU1=new x,this.binTU1=new x,this.norTU2=new x,this.tanTU2=new x,this.binTU2=new x,this.norImp=0,this.tanImp=0,this.binImp=0,this.norDen=0,this.tanDen=0,this.binDen=0,this.norTar=0,this.next=null,this.last=!1}function K(t){T.call(this),this.manifold=t,this.restitution=NaN,this.friction=NaN,this.p1=null,this.p2=null,this.lv1=null,this.lv2=null,this.av1=null,this.av2=null,this.i1=null,this.i2=null,this.tmp=new x,this.tmpC1=new x,this.tmpC2=new x,this.tmpP1=new x,this.tmpP2=new x,this.tmplv1=new x,this.tmplv2=new x,this.tmpav1=new x,this.tmpav2=new x,this.m1=NaN,this.m2=NaN,this.num=0,this.ps=t.points,this.cs=new J,this.cs.next=new J,this.cs.next.next=new J,this.cs.next.next.next=new J}function G(){this.shape1=null,this.shape2=null,this.body1=null,this.body2=null,this.prev=null,this.next=null,this.persisting=!1,this.sleeping=!1,this.detector=null,this.constraint=null,this.touching=!1,this.close=!1,this.dist=m.INF,this.b1Link=new Y(this),this.b2Link=new Y(this),this.s1Link=new Y(this),this.s2Link=new Y(this),this.manifold=new Z,this.buffer=[new X,new X,new X,new X],this.points=this.manifold.points,this.constraint=new K(this.manifold)}function Q(t,i){this.position=t||new x,this.orientation=i||new f,this.scale=1,this.invScale=1,this.mesh=null,this.id=NaN,this.name="",this.prev=null,this.next=null,this.type=0,this.massInfo=new W,this.newPosition=new x,this.controlPos=!1,this.newOrientation=new f,this.newRotation=new x,this.currentRotation=new x,this.controlRot=!1,this.controlRotInTime=!1,this.quaternion=new f,this.pos=new x,this.linearVelocity=new x,this.angularVelocity=new x,this.parent=null,this.contactLink=null,this.numContacts=0,this.shapes=null,this.numShapes=0,this.jointLink=null,this.numJoints=0,this.sleepPosition=new x,this.sleepOrientation=new f,this.isStatic=!1,this.isDynamic=!1,this.isKinematic=!1,this.rotation=new v,this.mass=0,this.inverseMass=0,this.inverseInertia=new v,this.localInertia=new v,this.inverseLocalInertia=new v,this.tmpInertia=new v,this.addedToIsland=!1,this.allowSleep=!0,this.sleepTime=0,this.sleeping=!1}function $(t,i){this.shape1=t||null,this.shape2=i||null}function tt(){this.types=o,this.numPairChecks=0,this.numPairs=0,this.pairs=[]}Object.assign(N.prototype,{Shape:!0,calculateMassInfo:function(t){d("Shape","Inheritance error.")},updateProxy:function(){d("Shape","Inheritance error.")}}),g.prototype=Object.assign(Object.create(N.prototype),{constructor:g,calculateMassInfo:function(t){var i=this.width*this.height*this.depth*this.density;t.mass=i,t.inertia.set(i*(this.height*this.height+this.depth*this.depth)*(1/12),0,0,0,i*(this.width*this.width+this.depth*this.depth)*(1/12),0,0,0,i*(this.width*this.width+this.height*this.height)*(1/12))},updateProxy:function(){var t=this.rotation.elements,i=this.dimentions;i[0]=t[0],i[1]=t[3],i[2]=t[6],i[3]=t[1],i[4]=t[4],i[5]=t[7],i[6]=t[2],i[7]=t[5],i[8]=t[8],i[9]=t[0]*this.halfWidth,i[10]=t[3]*this.halfWidth,i[11]=t[6]*this.halfWidth,i[12]=t[1]*this.halfHeight,i[13]=t[4]*this.halfHeight,i[14]=t[7]*this.halfHeight,i[15]=t[2]*this.halfDepth,i[16]=t[5]*this.halfDepth,i[17]=t[8]*this.halfDepth;var s=i[9],e=i[10],h=i[11],n=i[12],a=i[13],o=i[14],r=i[15],l=i[16],c=i[17],u=this.position.x,p=this.position.y,m=this.position.z,d=this.elements;d[0]=u+s+n+r,d[1]=p+e+a+l,d[2]=m+h+o+c,d[3]=u+s+n-r,d[4]=p+e+a-l,d[5]=m+h+o-c,d[6]=u+s-n+r,d[7]=p+e-a+l,d[8]=m+h-o+c,d[9]=u+s-n-r,d[10]=p+e-a-l,d[11]=m+h-o-c,d[12]=u-s+n+r,d[13]=p-e+a+l,d[14]=m-h+o+c,d[15]=u-s+n-r,d[16]=p-e+a-l,d[17]=m-h+o-c,d[18]=u-s-n+r,d[19]=p-e-a+l,d[20]=m-h-o+c,d[21]=u-s-n-r,d[22]=p-e-a-l,d[23]=m-h-o-c;var y=i[9]<0?-i[9]:i[9],x=i[10]<0?-i[10]:i[10],f=i[11]<0?-i[11]:i[11];y=i[12]<0?y-i[12]:y+i[12],x=i[13]<0?x-i[13]:x+i[13],f=i[14]<0?f-i[14]:f+i[14],y=i[15]<0?y-i[15]:y+i[15],x=i[16]<0?x-i[16]:x+i[16],f=i[17]<0?f-i[17]:f+i[17];var v=.005;this.aabb.set(this.position.x-y-v,this.position.x+y+v,this.position.y-x-v,this.position.y+x+v,this.position.z-f-v,this.position.z+f+v),null!=this.proxy&&this.proxy.update()}}),w.prototype=Object.assign(Object.create(N.prototype),{constructor:w,volume:function(){return m.PI*this.radius*1.333333},calculateMassInfo:function(t){var i=this.volume()*this.radius*this.radius*this.density;t.mass=i;var s=i*this.radius*this.radius*.4;t.inertia.set(s,0,0,0,s,0,0,0,s)},updateProxy:function(){var t=.005;this.aabb.set(this.position.x-this.radius-t,this.position.x+this.radius+t,this.position.y-this.radius-t,this.position.y+this.radius+t,this.position.z-this.radius-t,this.position.z+this.radius+t),null!=this.proxy&&this.proxy.update()}}),k.prototype=Object.assign(Object.create(N.prototype),{constructor:k,calculateMassInfo:function(t){var i=this.radius*this.radius,s=m.PI*i*this.height*this.density,e=(.25*i+.0833*this.height*this.height)*s,h=.5*i;t.mass=s,t.inertia.set(e,0,0,0,h,0,0,0,e)},updateProxy:function(){var t,i,s,e,h,n,a,o,r,l,c,u=this.rotation.elements;h=u[1]*u[1],n=u[4]*u[4],a=u[7]*u[7],this.normalDirection.set(u[1],u[4],u[7]),this.halfDirection.scale(this.normalDirection,this.halfHeight),i=1-h,(t=m.sqrt(i*i+h*n+h*a))>0&&(t=this.radius/t),i*=t,s=1-n,(t=m.sqrt(n*h+s*s+n*a))>0&&(t=this.radius/t),s*=t,e=1-a,(t=m.sqrt(a*h+a*n+e*e))>0&&(t=this.radius/t),e*=t,o=this.halfDirection.x<0?-this.halfDirection.x:this.halfDirection.x,r=this.halfDirection.y<0?-this.halfDirection.y:this.halfDirection.y,l=this.halfDirection.z<0?-this.halfDirection.z:this.halfDirection.z,o=i<0?o-i:o+i,r=s<0?r-s:r+s,l=e<0?l-e:l+e,c=.005,this.aabb.set(this.position.x-o-c,this.position.x+o+c,this.position.y-r-c,this.position.y+r+c,this.position.z-l-c,this.position.z+l+c),null!=this.proxy&&this.proxy.update()}}),M.prototype=Object.assign(Object.create(N.prototype),{constructor:M,volume:function(){return Number.MAX_VALUE},calculateMassInfo:function(t){t.mass=this.density,t.inertia.set(1,0,0,0,1,0,0,0,1)},updateProxy:function(){var t=.005,i=-m.INF,s=m.INF,e=this.normal;this.aabb.set(-1===e.x?this.position.x-t:i,1===e.x?this.position.x+t:s,-1===e.y?this.position.y-t:i,1===e.y?this.position.y+t:s,-1===e.z?this.position.z-t:i,1===e.z?this.position.z+t:s),null!=this.proxy&&this.proxy.update()}}),I.prototype=Object.assign(Object.create(N.prototype),{constructor:I,volume:function(){return Number.MAX_VALUE},calculateMassInfo:function(t){t.inertia.set(0,0,0,0,0,0,0,0,0)},updateProxy:function(){this.aabb.set(this.position.x-0,this.position.x+0,this.position.y-0,this.position.y+0,this.position.z-0,this.position.z+0),null!=this.proxy&&this.proxy.update()}}),Object.assign(P.prototype,{LimitMotor:!0,setLimit:function(t,i){this.lowerLimit=t,this.upperLimit=i},setMotor:function(t,i){this.motorSpeed=t,this.maxMotorForce=i},setSpring:function(t,i){this.frequency=t,this.dampingRatio=i}}),Object.assign(T.prototype,{Constraint:!0,preSolve:function(t,i){d("Constraint","Inheritance error.")},solve:function(){d("Constraint","Inheritance error.")},postSolve:function(){d("Constraint","Inheritance error.")}}),_.prototype=Object.assign(Object.create(T.prototype),{constructor:_,setId:function(t){this.id=i},setParent:function(t){this.parent=t,this.scale=this.parent.scale,this.invScale=this.parent.invScale,this.id=this.parent.numJoints,this.name||(this.name="J"+this.id)},updateAnchorPoints:function(){this.relativeAnchorPoint1.copy(this.localAnchorPoint1).applyMatrix3(this.body1.rotation,!0),this.relativeAnchorPoint2.copy(this.localAnchorPoint2).applyMatrix3(this.body2.rotation,!0),this.anchorPoint1.add(this.relativeAnchorPoint1,this.body1.position),this.anchorPoint2.add(this.relativeAnchorPoint2,this.body2.position)},attach:function(t){this.b1Link.body=this.body2,this.b2Link.body=this.body1,t?(this.body1.jointLink.push(this.b1Link),this.body2.jointLink.push(this.b2Link)):(null!=this.body1.jointLink?(this.b1Link.next=this.body1.jointLink).prev=this.b1Link:this.b1Link.next=null,this.body1.jointLink=this.b1Link,this.body1.numJoints++,null!=this.body2.jointLink?(this.b2Link.next=this.body2.jointLink).prev=this.b2Link:this.b2Link.next=null,this.body2.jointLink=this.b2Link,this.body2.numJoints++)},detach:function(t){if(t)this.body1.jointLink.splice(this.body1.jointLink.indexOf(this.b1Link),1),this.body2.jointLink.splice(this.body2.jointLink.indexOf(this.b2Link),1);else{var i=this.b1Link.prev,s=this.b1Link.next;null!=i&&(i.next=s),null!=s&&(s.prev=i),this.body1.jointLink==this.b1Link&&(this.body1.jointLink=s),this.b1Link.prev=null,this.b1Link.next=null,this.b1Link.body=null,this.body1.numJoints--,i=this.b2Link.prev,s=this.b2Link.next,null!=i&&(i.next=s),null!=s&&(s.prev=i),this.body2.jointLink==this.b2Link&&(this.body2.jointLink=s),this.b2Link.prev=null,this.b2Link.next=null,this.b2Link.body=null,this.body2.numJoints--}this.b1Link.body=null,this.b2Link.body=null},awake:function(){this.body1.awake(),this.body2.awake()},preSolve:function(t,i){},solve:function(){},postSolve:function(){},remove:function(){this.dispose()},dispose:function(){this.parent.removeJoint(this)},getPosition:function(){return[(new x).scale(this.anchorPoint1,this.scale),(new x).scale(this.anchorPoint2,this.scale)]}}),Object.assign(V.prototype,{LinearConstraint:!0,preSolve:function(t,i){this.r1x=this.r1.x,this.r1y=this.r1.y,this.r1z=this.r1.z,this.r2x=this.r2.x,this.r2y=this.r2.y,this.r2z=this.r2.z,this.m1=this.b1.inverseMass,this.m2=this.b2.inverseMass,this.ii1=this.i1.clone(),this.ii2=this.i2.clone();var s=this.ii1.elements,e=this.ii2.elements;this.ax1x=this.r1z*s[1]+-this.r1y*s[2],this.ax1y=this.r1z*s[4]+-this.r1y*s[5],this.ax1z=this.r1z*s[7]+-this.r1y*s[8],this.ay1x=-this.r1z*s[0]+this.r1x*s[2],this.ay1y=-this.r1z*s[3]+this.r1x*s[5],this.ay1z=-this.r1z*s[6]+this.r1x*s[8],this.az1x=this.r1y*s[0]+-this.r1x*s[1],this.az1y=this.r1y*s[3]+-this.r1x*s[4],this.az1z=this.r1y*s[6]+-this.r1x*s[7],this.ax2x=this.r2z*e[1]+-this.r2y*e[2],this.ax2y=this.r2z*e[4]+-this.r2y*e[5],this.ax2z=this.r2z*e[7]+-this.r2y*e[8],this.ay2x=-this.r2z*e[0]+this.r2x*e[2],this.ay2y=-this.r2z*e[3]+this.r2x*e[5],this.ay2z=-this.r2z*e[6]+this.r2x*e[8],this.az2x=this.r2y*e[0]+-this.r2x*e[1],this.az2y=this.r2y*e[3]+-this.r2x*e[4],this.az2z=this.r2y*e[6]+-this.r2x*e[7];var h=this.m1+this.m2,n=(new v).set(h,0,0,0,h,0,0,0,h).elements;n[0]+=s[4]*this.r1z*this.r1z-(s[7]+s[5])*this.r1y*this.r1z+s[8]*this.r1y*this.r1y,n[1]+=(s[6]*this.r1y+s[5]*this.r1x)*this.r1z-s[3]*this.r1z*this.r1z-s[8]*this.r1x*this.r1y,n[2]+=(s[3]*this.r1y-s[4]*this.r1x)*this.r1z-s[6]*this.r1y*this.r1y+s[7]*this.r1x*this.r1y,n[3]+=(s[2]*this.r1y+s[7]*this.r1x)*this.r1z-s[1]*this.r1z*this.r1z-s[8]*this.r1x*this.r1y,n[4]+=s[0]*this.r1z*this.r1z-(s[6]+s[2])*this.r1x*this.r1z+s[8]*this.r1x*this.r1x,n[5]+=(s[1]*this.r1x-s[0]*this.r1y)*this.r1z-s[7]*this.r1x*this.r1x+s[6]*this.r1x*this.r1y,n[6]+=(s[1]*this.r1y-s[4]*this.r1x)*this.r1z-s[2]*this.r1y*this.r1y+s[5]*this.r1x*this.r1y,n[7]+=(s[3]*this.r1x-s[0]*this.r1y)*this.r1z-s[5]*this.r1x*this.r1x+s[2]*this.r1x*this.r1y,n[8]+=s[0]*this.r1y*this.r1y-(s[3]+s[1])*this.r1x*this.r1y+s[4]*this.r1x*this.r1x,n[0]+=e[4]*this.r2z*this.r2z-(e[7]+e[5])*this.r2y*this.r2z+e[8]*this.r2y*this.r2y,n[1]+=(e[6]*this.r2y+e[5]*this.r2x)*this.r2z-e[3]*this.r2z*this.r2z-e[8]*this.r2x*this.r2y,n[2]+=(e[3]*this.r2y-e[4]*this.r2x)*this.r2z-e[6]*this.r2y*this.r2y+e[7]*this.r2x*this.r2y,n[3]+=(e[2]*this.r2y+e[7]*this.r2x)*this.r2z-e[1]*this.r2z*this.r2z-e[8]*this.r2x*this.r2y,n[4]+=e[0]*this.r2z*this.r2z-(e[6]+e[2])*this.r2x*this.r2z+e[8]*this.r2x*this.r2x,n[5]+=(e[1]*this.r2x-e[0]*this.r2y)*this.r2z-e[7]*this.r2x*this.r2x+e[6]*this.r2x*this.r2y,n[6]+=(e[1]*this.r2y-e[4]*this.r2x)*this.r2z-e[2]*this.r2y*this.r2y+e[5]*this.r2x*this.r2y,n[7]+=(e[3]*this.r2x-e[0]*this.r2y)*this.r2z-e[5]*this.r2x*this.r2x+e[2]*this.r2x*this.r2y,n[8]+=e[0]*this.r2y*this.r2y-(e[3]+e[1])*this.r2x*this.r2y+e[4]*this.r2x*this.r2x;var a=1/(n[0]*(n[4]*n[8]-n[7]*n[5])+n[3]*(n[7]*n[2]-n[1]*n[8])+n[6]*(n[1]*n[5]-n[4]*n[2]));this.dd=(new v).set(n[4]*n[8]-n[5]*n[7],n[2]*n[7]-n[1]*n[8],n[1]*n[5]-n[2]*n[4],n[5]*n[6]-n[3]*n[8],n[0]*n[8]-n[2]*n[6],n[2]*n[3]-n[0]*n[5],n[3]*n[7]-n[4]*n[6],n[1]*n[6]-n[0]*n[7],n[0]*n[4]-n[1]*n[3]).scaleEqual(a),this.velx=this.p2.x-this.p1.x,this.vely=this.p2.y-this.p1.y,this.velz=this.p2.z-this.p1.z;var o=m.sqrt(this.velx*this.velx+this.vely*this.vely+this.velz*this.velz);o>.005?(o=(.005-o)/o*i*.05,this.velx*=o,this.vely*=o,this.velz*=o):(this.velx=0,this.vely=0,this.velz=0),this.impx*=.95,this.impy*=.95,this.impz*=.95,this.l1.x+=this.impx*this.m1,this.l1.y+=this.impy*this.m1,this.l1.z+=this.impz*this.m1,this.a1.x+=this.impx*this.ax1x+this.impy*this.ay1x+this.impz*this.az1x,this.a1.y+=this.impx*this.ax1y+this.impy*this.ay1y+this.impz*this.az1y,this.a1.z+=this.impx*this.ax1z+this.impy*this.ay1z+this.impz*this.az1z,this.l2.x-=this.impx*this.m2,this.l2.y-=this.impy*this.m2,this.l2.z-=this.impz*this.m2,this.a2.x-=this.impx*this.ax2x+this.impy*this.ay2x+this.impz*this.az2x,this.a2.y-=this.impx*this.ax2y+this.impy*this.ay2y+this.impz*this.az2y,this.a2.z-=this.impx*this.ax2z+this.impy*this.ay2z+this.impz*this.az2z},solve:function(){var t=this.dd.elements,i=this.l2.x-this.l1.x+this.a2.y*this.r2z-this.a2.z*this.r2y-this.a1.y*this.r1z+this.a1.z*this.r1y-this.velx,s=this.l2.y-this.l1.y+this.a2.z*this.r2x-this.a2.x*this.r2z-this.a1.z*this.r1x+this.a1.x*this.r1z-this.vely,e=this.l2.z-this.l1.z+this.a2.x*this.r2y-this.a2.y*this.r2x-this.a1.x*this.r1y+this.a1.y*this.r1x-this.velz,h=i*t[0]+s*t[1]+e*t[2],n=i*t[3]+s*t[4]+e*t[5],a=i*t[6]+s*t[7]+e*t[8];this.impx+=h,this.impy+=n,this.impz+=a,this.l1.x+=h*this.m1,this.l1.y+=n*this.m1,this.l1.z+=a*this.m1,this.a1.x+=h*this.ax1x+n*this.ay1x+a*this.az1x,this.a1.y+=h*this.ax1y+n*this.ay1y+a*this.az1y,this.a1.z+=h*this.ax1z+n*this.ay1z+a*this.az1z,this.l2.x-=h*this.m2,this.l2.y-=n*this.m2,this.l2.z-=a*this.m2,this.a2.x-=h*this.ax2x+n*this.ay2x+a*this.az2x,this.a2.y-=h*this.ax2y+n*this.ay2y+a*this.az2y,this.a2.z-=h*this.ax2z+n*this.ay2z+a*this.az2z}}),Object.assign(E.prototype,{Rotational3Constraint:!0,preSolve:function(t,i){this.ax1=this.limitMotor1.axis.x,this.ay1=this.limitMotor1.axis.y,this.az1=this.limitMotor1.axis.z,this.ax2=this.limitMotor2.axis.x,this.ay2=this.limitMotor2.axis.y,this.az2=this.limitMotor2.axis.z,this.ax3=this.limitMotor3.axis.x,this.ay3=this.limitMotor3.axis.y,this.az3=this.limitMotor3.axis.z,this.lowerLimit1=this.limitMotor1.lowerLimit,this.upperLimit1=this.limitMotor1.upperLimit,this.motorSpeed1=this.limitMotor1.motorSpeed,this.maxMotorForce1=this.limitMotor1.maxMotorForce,this.enableMotor1=this.maxMotorForce1>0,this.lowerLimit2=this.limitMotor2.lowerLimit,this.upperLimit2=this.limitMotor2.upperLimit,this.motorSpeed2=this.limitMotor2.motorSpeed,this.maxMotorForce2=this.limitMotor2.maxMotorForce,this.enableMotor2=this.maxMotorForce2>0,this.lowerLimit3=this.limitMotor3.lowerLimit,this.upperLimit3=this.limitMotor3.upperLimit,this.motorSpeed3=this.limitMotor3.motorSpeed,this.maxMotorForce3=this.limitMotor3.maxMotorForce,this.enableMotor3=this.maxMotorForce3>0;var s=this.i1.elements,e=this.i2.elements;this.i1e00=s[0],this.i1e01=s[1],this.i1e02=s[2],this.i1e10=s[3],this.i1e11=s[4],this.i1e12=s[5],this.i1e20=s[6],this.i1e21=s[7],this.i1e22=s[8],this.i2e00=e[0],this.i2e01=e[1],this.i2e02=e[2],this.i2e10=e[3],this.i2e11=e[4],this.i2e12=e[5],this.i2e20=e[6],this.i2e21=e[7],this.i2e22=e[8];var h=this.limitMotor1.frequency,n=this.limitMotor2.frequency,a=this.limitMotor3.frequency,o=h>0,r=n>0,l=a>0,c=this.lowerLimit1<=this.upperLimit1,u=this.lowerLimit2<=this.upperLimit2,p=this.lowerLimit3<=this.upperLimit3,m=this.limitMotor1.angle;c?(this.lowerLimit1==this.upperLimit1?(0!=this.limitState1&&(this.limitState1=0,this.limitImpulse1=0),this.limitVelocity1=this.lowerLimit1-m):m<this.lowerLimit1?(-1!=this.limitState1&&(this.limitState1=-1,this.limitImpulse1=0),this.limitVelocity1=this.lowerLimit1-m):m>this.upperLimit1?(1!=this.limitState1&&(this.limitState1=1,this.limitImpulse1=0),this.limitVelocity1=this.upperLimit1-m):(this.limitState1=2,this.limitImpulse1=0,this.limitVelocity1=0),o||(this.limitVelocity1>.02?this.limitVelocity1-=.02:this.limitVelocity1<-.02?this.limitVelocity1+=.02:this.limitVelocity1=0)):(this.limitState1=2,this.limitImpulse1=0);var d=this.limitMotor2.angle;u?(this.lowerLimit2==this.upperLimit2?(0!=this.limitState2&&(this.limitState2=0,this.limitImpulse2=0),this.limitVelocity2=this.lowerLimit2-d):d<this.lowerLimit2?(-1!=this.limitState2&&(this.limitState2=-1,this.limitImpulse2=0),this.limitVelocity2=this.lowerLimit2-d):d>this.upperLimit2?(1!=this.limitState2&&(this.limitState2=1,this.limitImpulse2=0),this.limitVelocity2=this.upperLimit2-d):(this.limitState2=2,this.limitImpulse2=0,this.limitVelocity2=0),r||(this.limitVelocity2>.02?this.limitVelocity2-=.02:this.limitVelocity2<-.02?this.limitVelocity2+=.02:this.limitVelocity2=0)):(this.limitState2=2,this.limitImpulse2=0);var y=this.limitMotor3.angle;if(p?(this.lowerLimit3==this.upperLimit3?(0!=this.limitState3&&(this.limitState3=0,this.limitImpulse3=0),this.limitVelocity3=this.lowerLimit3-y):y<this.lowerLimit3?(-1!=this.limitState3&&(this.limitState3=-1,this.limitImpulse3=0),this.limitVelocity3=this.lowerLimit3-y):y>this.upperLimit3?(1!=this.limitState3&&(this.limitState3=1,this.limitImpulse3=0),this.limitVelocity3=this.upperLimit3-y):(this.limitState3=2,this.limitImpulse3=0,this.limitVelocity3=0),l||(this.limitVelocity3>.02?this.limitVelocity3-=.02:this.limitVelocity3<-.02?this.limitVelocity3+=.02:this.limitVelocity3=0)):(this.limitState3=2,this.limitImpulse3=0),this.enableMotor1&&(0!=this.limitState1||o)?this.maxMotorImpulse1=this.maxMotorForce1*t:(this.motorImpulse1=0,this.maxMotorImpulse1=0),this.enableMotor2&&(0!=this.limitState2||r)?this.maxMotorImpulse2=this.maxMotorForce2*t:(this.motorImpulse2=0,this.maxMotorImpulse2=0),this.enableMotor3&&(0!=this.limitState3||l)?this.maxMotorImpulse3=this.maxMotorForce3*t:(this.motorImpulse3=0,this.maxMotorImpulse3=0),this.a1x1=this.ax1*this.i1e00+this.ay1*this.i1e01+this.az1*this.i1e02,this.a1y1=this.ax1*this.i1e10+this.ay1*this.i1e11+this.az1*this.i1e12,this.a1z1=this.ax1*this.i1e20+this.ay1*this.i1e21+this.az1*this.i1e22,this.a2x1=this.ax1*this.i2e00+this.ay1*this.i2e01+this.az1*this.i2e02,this.a2y1=this.ax1*this.i2e10+this.ay1*this.i2e11+this.az1*this.i2e12,this.a2z1=this.ax1*this.i2e20+this.ay1*this.i2e21+this.az1*this.i2e22,this.a1x2=this.ax2*this.i1e00+this.ay2*this.i1e01+this.az2*this.i1e02,this.a1y2=this.ax2*this.i1e10+this.ay2*this.i1e11+this.az2*this.i1e12,this.a1z2=this.ax2*this.i1e20+this.ay2*this.i1e21+this.az2*this.i1e22,this.a2x2=this.ax2*this.i2e00+this.ay2*this.i2e01+this.az2*this.i2e02,this.a2y2=this.ax2*this.i2e10+this.ay2*this.i2e11+this.az2*this.i2e12,this.a2z2=this.ax2*this.i2e20+this.ay2*this.i2e21+this.az2*this.i2e22,this.a1x3=this.ax3*this.i1e00+this.ay3*this.i1e01+this.az3*this.i1e02,this.a1y3=this.ax3*this.i1e10+this.ay3*this.i1e11+this.az3*this.i1e12,this.a1z3=this.ax3*this.i1e20+this.ay3*this.i1e21+this.az3*this.i1e22,this.a2x3=this.ax3*this.i2e00+this.ay3*this.i2e01+this.az3*this.i2e02,this.a2y3=this.ax3*this.i2e10+this.ay3*this.i2e11+this.az3*this.i2e12,this.a2z3=this.ax3*this.i2e20+this.ay3*this.i2e21+this.az3*this.i2e22,this.k00=this.ax1*(this.a1x1+this.a2x1)+this.ay1*(this.a1y1+this.a2y1)+this.az1*(this.a1z1+this.a2z1),this.k01=this.ax1*(this.a1x2+this.a2x2)+this.ay1*(this.a1y2+this.a2y2)+this.az1*(this.a1z2+this.a2z2),this.k02=this.ax1*(this.a1x3+this.a2x3)+this.ay1*(this.a1y3+this.a2y3)+this.az1*(this.a1z3+this.a2z3),this.k10=this.ax2*(this.a1x1+this.a2x1)+this.ay2*(this.a1y1+this.a2y1)+this.az2*(this.a1z1+this.a2z1),this.k11=this.ax2*(this.a1x2+this.a2x2)+this.ay2*(this.a1y2+this.a2y2)+this.az2*(this.a1z2+this.a2z2),this.k12=this.ax2*(this.a1x3+this.a2x3)+this.ay2*(this.a1y3+this.a2y3)+this.az2*(this.a1z3+this.a2z3),this.k20=this.ax3*(this.a1x1+this.a2x1)+this.ay3*(this.a1y1+this.a2y1)+this.az3*(this.a1z1+this.a2z1),this.k21=this.ax3*(this.a1x2+this.a2x2)+this.ay3*(this.a1y2+this.a2y2)+this.az3*(this.a1z2+this.a2z2),this.k22=this.ax3*(this.a1x3+this.a2x3)+this.ay3*(this.a1y3+this.a2y3)+this.az3*(this.a1z3+this.a2z3),this.kv00=this.k00,this.kv11=this.k11,this.kv22=this.k22,this.dv00=1/this.kv00,this.dv11=1/this.kv11,this.dv22=1/this.kv22,o&&2!=this.limitState1){var x=6.2831853*h,f=x*x*t,v=i/(f+2*this.limitMotor1.dampingRatio*x);this.cfm1=this.kv00*v,this.limitVelocity1*=f*v}else this.cfm1=0,this.limitVelocity1*=.05*i;r&&2!=this.limitState2?(v=i/((f=(x=6.2831853*n)*x*t)+2*this.limitMotor2.dampingRatio*x),this.cfm2=this.kv11*v,this.limitVelocity2*=f*v):(this.cfm2=0,this.limitVelocity2*=.05*i),l&&2!=this.limitState3?(v=i/((f=(x=6.2831853*a)*x*t)+2*this.limitMotor3.dampingRatio*x),this.cfm3=this.kv22*v,this.limitVelocity3*=f*v):(this.cfm3=0,this.limitVelocity3*=.05*i),this.k00+=this.cfm1,this.k11+=this.cfm2,this.k22+=this.cfm3;var b=1/(this.k00*(this.k11*this.k22-this.k21*this.k12)+this.k10*(this.k21*this.k02-this.k01*this.k22)+this.k20*(this.k01*this.k12-this.k11*this.k02));this.d00=(this.k11*this.k22-this.k12*this.k21)*b,this.d01=(this.k02*this.k21-this.k01*this.k22)*b,this.d02=(this.k01*this.k12-this.k02*this.k11)*b,this.d10=(this.k12*this.k20-this.k10*this.k22)*b,this.d11=(this.k00*this.k22-this.k02*this.k20)*b,this.d12=(this.k02*this.k10-this.k00*this.k12)*b,this.d20=(this.k10*this.k21-this.k11*this.k20)*b,this.d21=(this.k01*this.k20-this.k00*this.k21)*b,this.d22=(this.k00*this.k11-this.k01*this.k10)*b,this.limitImpulse1*=.95,this.motorImpulse1*=.95,this.limitImpulse2*=.95,this.motorImpulse2*=.95,this.limitImpulse3*=.95,this.motorImpulse3*=.95;var z=this.limitImpulse1+this.motorImpulse1,N=this.limitImpulse2+this.motorImpulse2,g=this.limitImpulse3+this.motorImpulse3;this.a1.x+=z*this.a1x1+N*this.a1x2+g*this.a1x3,this.a1.y+=z*this.a1y1+N*this.a1y2+g*this.a1y3,this.a1.z+=z*this.a1z1+N*this.a1z2+g*this.a1z3,this.a2.x-=z*this.a2x1+N*this.a2x2+g*this.a2x3,this.a2.y-=z*this.a2y1+N*this.a2y2+g*this.a2y3,this.a2.z-=z*this.a2z1+N*this.a2z2+g*this.a2z3},solve_:function(){var t=this.a2.x-this.a1.x,i=this.a2.y-this.a1.y,s=this.a2.z-this.a1.z;this.limitVelocity3=30;var e=t*this.ax1+i*this.ay1+s*this.az1-this.limitVelocity1,h=t*this.ax2+i*this.ay2+s*this.az2-this.limitVelocity2,n=t*this.ax3+i*this.ay3+s*this.az3-this.limitVelocity3,a=e*this.d00+h*this.d01+n*this.d02,o=e*this.d10+h*this.d11+n*this.d12,r=e*this.d20+h*this.d21+n*this.d22;this.limitImpulse1+=a,this.limitImpulse2+=o,this.limitImpulse3+=r,this.a1.x+=a*this.a1x1+o*this.a1x2+r*this.a1x3,this.a1.y+=a*this.a1y1+o*this.a1y2+r*this.a1y3,this.a1.z+=a*this.a1z1+o*this.a1z2+r*this.a1z3,this.a2.x-=a*this.a2x1+o*this.a2x2+r*this.a2x3,this.a2.y-=a*this.a2y1+o*this.a2y2+r*this.a2y3,this.a2.z-=a*this.a2z1+o*this.a2z2+r*this.a2z3},solve:function(){var t=this.a2.x-this.a1.x,i=this.a2.y-this.a1.y,s=this.a2.z-this.a1.z,e=t*this.ax1+i*this.ay1+s*this.az1,h=t*this.ax2+i*this.ay2+s*this.az2,n=t*this.ax3+i*this.ay3+s*this.az3,a=this.motorImpulse1,o=this.motorImpulse2,r=this.motorImpulse3,l=0,c=0,u=0;this.enableMotor1&&(l=(e-this.motorSpeed1)*this.dv00,this.motorImpulse1+=l,this.motorImpulse1>this.maxMotorImpulse1?this.motorImpulse1=this.maxMotorImpulse1:this.motorImpulse1<-this.maxMotorImpulse1&&(this.motorImpulse1=-this.maxMotorImpulse1),l=this.motorImpulse1-a),this.enableMotor2&&(c=(h-this.motorSpeed2)*this.dv11,this.motorImpulse2+=c,this.motorImpulse2>this.maxMotorImpulse2?this.motorImpulse2=this.maxMotorImpulse2:this.motorImpulse2<-this.maxMotorImpulse2&&(this.motorImpulse2=-this.maxMotorImpulse2),c=this.motorImpulse2-o),this.enableMotor3&&(u=(n-this.motorSpeed3)*this.dv22,this.motorImpulse3+=u,this.motorImpulse3>this.maxMotorImpulse3?this.motorImpulse3=this.maxMotorImpulse3:this.motorImpulse3<-this.maxMotorImpulse3&&(this.motorImpulse3=-this.maxMotorImpulse3),u=this.motorImpulse3-r),e+=l*this.kv00+c*this.k01+u*this.k02,h+=l*this.k10+c*this.kv11+u*this.k12,n+=l*this.k20+c*this.k21+u*this.kv22,e-=this.limitVelocity1+this.limitImpulse1*this.cfm1,h-=this.limitVelocity2+this.limitImpulse2*this.cfm2,n-=this.limitVelocity3+this.limitImpulse3*this.cfm3;var p=this.limitImpulse1,m=this.limitImpulse2,d=this.limitImpulse3,y=e*this.d00+h*this.d01+n*this.d02,x=e*this.d10+h*this.d11+n*this.d12,f=e*this.d20+h*this.d21+n*this.d22;this.limitImpulse1+=y,this.limitImpulse2+=x,this.limitImpulse3+=f;var v,b=0;switch((2==this.limitState1||this.limitImpulse1*this.limitState1<0)&&(h+=(y=-p)*this.k10,n+=y*this.k20,b|=1),(2==this.limitState2||this.limitImpulse2*this.limitState2<0)&&(e+=(x=-m)*this.k01,n+=x*this.k21,b|=2),(2==this.limitState3||this.limitImpulse3*this.limitState3<0)&&(e+=(f=-d)*this.k02,h+=f*this.k12,b|=4),b){case 1:v=1/(this.k11*this.k22-this.k12*this.k21),x=(this.k22*h+-this.k12*n)*v,f=(-this.k21*h+this.k11*n)*v;break;case 2:v=1/(this.k00*this.k22-this.k02*this.k20),y=(this.k22*e+-this.k02*n)*v,f=(-this.k20*e+this.k00*n)*v;break;case 3:f=n/this.k22;break;case 4:v=1/(this.k00*this.k11-this.k01*this.k10),y=(this.k11*e+-this.k01*h)*v,x=(-this.k10*e+this.k00*h)*v;break;case 5:x=h/this.k11;break;case 6:y=e/this.k00}this.limitImpulse1=y+p,this.limitImpulse2=x+m,this.limitImpulse3=f+d;var z=l+y,N=c+x,g=u+f;this.a1.x+=z*this.a1x1+N*this.a1x2+g*this.a1x3,this.a1.y+=z*this.a1y1+N*this.a1y2+g*this.a1y3,this.a1.z+=z*this.a1z1+N*this.a1z2+g*this.a1z3,this.a2.x-=z*this.a2x1+N*this.a2x2+g*this.a2x3,this.a2.y-=z*this.a2y1+N*this.a2y2+g*this.a2y3,this.a2.z-=z*this.a2z1+N*this.a2z2+g*this.a2z3,t=this.a2.x-this.a1.x,i=this.a2.y-this.a1.y,s=this.a2.z-this.a1.z,h=t*this.ax2+i*this.ay2+s*this.az2}}),C.prototype=Object.assign(Object.create(_.prototype),{constructor:C,preSolve:function(t,i){this.updateAnchorPoints(),this.ax1.copy(this.localAxis1).applyMatrix3(this.body1.rotation,!0),this.ax2.copy(this.localAxis2).applyMatrix3(this.body2.rotation,!0),this.an1.copy(this.localAngle1).applyMatrix3(this.body1.rotation,!0),this.an2.copy(this.localAngle2).applyMatrix3(this.body2.rotation,!0),this.nor.set(this.ax1.x*this.body2.inverseMass+this.ax2.x*this.body1.inverseMass,this.ax1.y*this.body2.inverseMass+this.ax2.y*this.body1.inverseMass,this.ax1.z*this.body2.inverseMass+this.ax2.z*this.body1.inverseMass).normalize(),this.tan.tangent(this.nor).normalize(),this.bin.crossVectors(this.nor,this.tan);var s=m.acosClamp(m.dotVectors(this.an1,this.an2));this.tmp.crossVectors(this.an1,this.an2),m.dotVectors(this.nor,this.tmp)<0?this.limitMotor.angle=-s:this.limitMotor.angle=s,this.tmp.crossVectors(this.ax1,this.ax2),this.r3.limitMotor2.angle=m.dotVectors(this.tan,this.tmp),this.r3.limitMotor3.angle=m.dotVectors(this.bin,this.tmp),this.r3.preSolve(t,i),this.lc.preSolve(t,i)},solve:function(){this.r3.solve(),this.lc.solve()},postSolve:function(){}}),O.prototype=Object.assign(Object.create(_.prototype),{constructor:O,preSolve:function(t,i){this.updateAnchorPoints(),this.lc.preSolve(t,i)},solve:function(){this.lc.solve()},postSolve:function(){}}),Object.assign(A.prototype,{TranslationalConstraint:!0,preSolve:function(t,i){this.ax=this.limitMotor.axis.x,this.ay=this.limitMotor.axis.y,this.az=this.limitMotor.axis.z,this.lowerLimit=this.limitMotor.lowerLimit,this.upperLimit=this.limitMotor.upperLimit,this.motorSpeed=this.limitMotor.motorSpeed,this.maxMotorForce=this.limitMotor.maxMotorForce,this.enableMotor=this.maxMotorForce>0,this.m1=this.b1.inverseMass,this.m2=this.b2.inverseMass;var s=this.i1.elements,e=this.i2.elements;this.i1e00=s[0],this.i1e01=s[1],this.i1e02=s[2],this.i1e10=s[3],this.i1e11=s[4],this.i1e12=s[5],this.i1e20=s[6],this.i1e21=s[7],this.i1e22=s[8],this.i2e00=e[0],this.i2e01=e[1],this.i2e02=e[2],this.i2e10=e[3],this.i2e11=e[4],this.i2e12=e[5],this.i2e20=e[6],this.i2e21=e[7],this.i2e22=e[8];var h=this.p2.x-this.p1.x,n=this.p2.y-this.p1.y,a=this.p2.z-this.p1.z,o=h*this.ax+n*this.ay+a*this.az,r=this.limitMotor.frequency,l=r>0;(l&&o>20||o<-20)&&(l=!1),this.lowerLimit<=this.upperLimit?(this.lowerLimit==this.upperLimit?(0!=this.limitState&&(this.limitState=0,this.limitImpulse=0),this.limitVelocity=this.lowerLimit-o,l||(o=this.lowerLimit)):o<this.lowerLimit?(-1!=this.limitState&&(this.limitState=-1,this.limitImpulse=0),this.limitVelocity=this.lowerLimit-o,l||(o=this.lowerLimit)):o>this.upperLimit?(1!=this.limitState&&(this.limitState=1,this.limitImpulse=0),this.limitVelocity=this.upperLimit-o,l||(o=this.upperLimit)):(this.limitState=2,this.limitImpulse=0,this.limitVelocity=0),l||(this.limitVelocity>.005?this.limitVelocity-=.005:this.limitVelocity<-.005?this.limitVelocity+=.005:this.limitVelocity=0)):(this.limitState=2,this.limitImpulse=0),this.enableMotor&&(0!=this.limitState||l)?this.maxMotorImpulse=this.maxMotorForce*t:(this.motorImpulse=0,this.maxMotorImpulse=0);var c=o*this.ax,u=o*this.ay,p=o*this.az,m=this.m1/(this.m1+this.m2),d=1-m;if(this.r1x=this.r1.x+c*m,this.r1y=this.r1.y+u*m,this.r1z=this.r1.z+p*m,this.r2x=this.r2.x-c*d,this.r2y=this.r2.y-u*d,this.r2z=this.r2.z-p*d,this.t1x=this.r1y*this.az-this.r1z*this.ay,this.t1y=this.r1z*this.ax-this.r1x*this.az,this.t1z=this.r1x*this.ay-this.r1y*this.ax,this.t2x=this.r2y*this.az-this.r2z*this.ay,this.t2y=this.r2z*this.ax-this.r2x*this.az,this.t2z=this.r2x*this.ay-this.r2y*this.ax,this.l1x=this.ax*this.m1,this.l1y=this.ay*this.m1,this.l1z=this.az*this.m1,this.l2x=this.ax*this.m2,this.l2y=this.ay*this.m2,this.l2z=this.az*this.m2,this.a1x=this.t1x*this.i1e00+this.t1y*this.i1e01+this.t1z*this.i1e02,this.a1y=this.t1x*this.i1e10+this.t1y*this.i1e11+this.t1z*this.i1e12,this.a1z=this.t1x*this.i1e20+this.t1y*this.i1e21+this.t1z*this.i1e22,this.a2x=this.t2x*this.i2e00+this.t2y*this.i2e01+this.t2z*this.i2e02,this.a2y=this.t2x*this.i2e10+this.t2y*this.i2e11+this.t2z*this.i2e12,this.a2z=this.t2x*this.i2e20+this.t2y*this.i2e21+this.t2z*this.i2e22,this.motorDenom=this.m1+this.m2+this.ax*(this.a1y*this.r1z-this.a1z*this.r1y+this.a2y*this.r2z-this.a2z*this.r2y)+this.ay*(this.a1z*this.r1x-this.a1x*this.r1z+this.a2z*this.r2x-this.a2x*this.r2z)+this.az*(this.a1x*this.r1y-this.a1y*this.r1x+this.a2x*this.r2y-this.a2y*this.r2x),this.invMotorDenom=1/this.motorDenom,l&&2!=this.limitState){var y=6.2831853*r,x=y*y*t,f=i/(x+2*this.limitMotor.dampingRatio*y);this.cfm=this.motorDenom*f,this.limitVelocity*=x*f}else this.cfm=0,this.limitVelocity*=.05*i;this.invDenom=1/(this.motorDenom+this.cfm);var v=this.limitImpulse+this.motorImpulse;this.l1.x+=v*this.l1x,this.l1.y+=v*this.l1y,this.l1.z+=v*this.l1z,this.a1.x+=v*this.a1x,this.a1.y+=v*this.a1y,this.a1.z+=v*this.a1z,this.l2.x-=v*this.l2x,this.l2.y-=v*this.l2y,this.l2.z-=v*this.l2z,this.a2.x-=v*this.a2x,this.a2.y-=v*this.a2y,this.a2.z-=v*this.a2z},solve:function(){var t,i,s=this.ax*(this.l2.x-this.l1.x)+this.ay*(this.l2.y-this.l1.y)+this.az*(this.l2.z-this.l1.z)+this.t2x*this.a2.x-this.t1x*this.a1.x+this.t2y*this.a2.y-this.t1y*this.a1.y+this.t2z*this.a2.z-this.t1z*this.a1.z;if(this.enableMotor){t=(s-this.motorSpeed)*this.invMotorDenom;var e=this.motorImpulse;this.motorImpulse+=t,this.motorImpulse>this.maxMotorImpulse?this.motorImpulse=this.maxMotorImpulse:this.motorImpulse<-this.maxMotorImpulse&&(this.motorImpulse=-this.maxMotorImpulse),s-=(t=this.motorImpulse-e)*this.motorDenom}else t=0;if(2!=this.limitState){i=(s-this.limitVelocity-this.limitImpulse*this.cfm)*this.invDenom;var h=this.limitImpulse;this.limitImpulse+=i,this.limitImpulse*this.limitState<0&&(this.limitImpulse=0),i=this.limitImpulse-h}else i=0;var n=i+t;this.l1.x+=n*this.l1x,this.l1.y+=n*this.l1y,this.l1.z+=n*this.l1z,this.a1.x+=n*this.a1x,this.a1.y+=n*this.a1y,this.a1.z+=n*this.a1z,this.l2.x-=n*this.l2x,this.l2.y-=n*this.l2y,this.l2.z-=n*this.l2z,this.a2.x-=n*this.a2x,this.a2.y-=n*this.a2y,this.a2.z-=n*this.a2z}}),D.prototype=Object.assign(Object.create(_.prototype),{constructor:D,preSolve:function(t,i){this.updateAnchorPoints(),this.nor.sub(this.anchorPoint2,this.anchorPoint1).normalize(),this.t.preSolve(t,i)},solve:function(){this.t.solve()},postSolve:function(){}}),Object.assign(j.prototype,{AngularConstraint:!0,preSolve:function(t,i){var s,e,h;this.ii1=this.i1.clone(),this.ii2=this.i2.clone(),s=1/((h=(new v).add(this.ii1,this.ii2).elements)[0]*(h[4]*h[8]-h[7]*h[5])+h[3]*(h[7]*h[2]-h[1]*h[8])+h[6]*(h[1]*h[5]-h[4]*h[2])),this.dd=(new v).set(h[4]*h[8]-h[5]*h[7],h[2]*h[7]-h[1]*h[8],h[1]*h[5]-h[2]*h[4],h[5]*h[6]-h[3]*h[8],h[0]*h[8]-h[2]*h[6],h[2]*h[3]-h[0]*h[5],h[3]*h[7]-h[4]*h[6],h[1]*h[6]-h[0]*h[7],h[0]*h[4]-h[1]*h[3]).multiplyScalar(s),this.relativeOrientation.invert(this.b1.orientation).multiply(this.targetOrientation).multiply(this.b2.orientation),s=2*this.relativeOrientation.w,this.vel.copy(this.relativeOrientation).multiplyScalar(s),(e=this.vel.length())>.02?(e=(.02-e)/e*i*.05,this.vel.multiplyScalar(e)):this.vel.set(0,0,0),this.rn1.copy(this.imp).applyMatrix3(this.ii1,!0),this.rn2.copy(this.imp).applyMatrix3(this.ii2,!0),this.a1.add(this.rn1),this.a2.sub(this.rn2)},solve:function(){var t=this.a2.clone().sub(this.a1).sub(this.vel);this.rn0.copy(t).applyMatrix3(this.dd,!0),this.rn1.copy(this.rn0).applyMatrix3(this.ii1,!0),this.rn2.copy(this.rn0).applyMatrix3(this.ii2,!0),this.imp.add(this.rn0),this.a1.add(this.rn1),this.a2.sub(this.rn2)}}),Object.assign(R.prototype,{Translational3Constraint:!0,preSolve:function(t,i){this.ax1=this.limitMotor1.axis.x,this.ay1=this.limitMotor1.axis.y,this.az1=this.limitMotor1.axis.z,this.ax2=this.limitMotor2.axis.x,this.ay2=this.limitMotor2.axis.y,this.az2=this.limitMotor2.axis.z,this.ax3=this.limitMotor3.axis.x,this.ay3=this.limitMotor3.axis.y,this.az3=this.limitMotor3.axis.z,this.lowerLimit1=this.limitMotor1.lowerLimit,this.upperLimit1=this.limitMotor1.upperLimit,this.motorSpeed1=this.limitMotor1.motorSpeed,this.maxMotorForce1=this.limitMotor1.maxMotorForce,this.enableMotor1=this.maxMotorForce1>0,this.lowerLimit2=this.limitMotor2.lowerLimit,this.upperLimit2=this.limitMotor2.upperLimit,this.motorSpeed2=this.limitMotor2.motorSpeed,this.maxMotorForce2=this.limitMotor2.maxMotorForce,this.enableMotor2=this.maxMotorForce2>0,this.lowerLimit3=this.limitMotor3.lowerLimit,this.upperLimit3=this.limitMotor3.upperLimit,this.motorSpeed3=this.limitMotor3.motorSpeed,this.maxMotorForce3=this.limitMotor3.maxMotorForce,this.enableMotor3=this.maxMotorForce3>0,this.m1=this.b1.inverseMass,this.m2=this.b2.inverseMass;var s=this.i1.elements,e=this.i2.elements;this.i1e00=s[0],this.i1e01=s[1],this.i1e02=s[2],this.i1e10=s[3],this.i1e11=s[4],this.i1e12=s[5],this.i1e20=s[6],this.i1e21=s[7],this.i1e22=s[8],this.i2e00=e[0],this.i2e01=e[1],this.i2e02=e[2],this.i2e10=e[3],this.i2e11=e[4],this.i2e12=e[5],this.i2e20=e[6],this.i2e21=e[7],this.i2e22=e[8];var h=this.p2.x-this.p1.x,n=this.p2.y-this.p1.y,a=this.p2.z-this.p1.z,o=h*this.ax1+n*this.ay1+a*this.az1,r=h*this.ax2+n*this.ay2+a*this.az2,l=h*this.ax3+n*this.ay3+a*this.az3,c=this.limitMotor1.frequency,u=this.limitMotor2.frequency,p=this.limitMotor3.frequency,m=c>0,d=u>0,y=p>0,x=this.lowerLimit1<=this.upperLimit1,f=this.lowerLimit2<=this.upperLimit2,v=this.lowerLimit3<=this.upperLimit3;(m&&o>20||o<-20)&&(m=!1),(d&&r>20||r<-20)&&(d=!1),(y&&l>20||l<-20)&&(y=!1),x?(this.lowerLimit1==this.upperLimit1?(0!=this.limitState1&&(this.limitState1=0,this.limitImpulse1=0),this.limitVelocity1=this.lowerLimit1-o,m||(o=this.lowerLimit1)):o<this.lowerLimit1?(-1!=this.limitState1&&(this.limitState1=-1,this.limitImpulse1=0),this.limitVelocity1=this.lowerLimit1-o,m||(o=this.lowerLimit1)):o>this.upperLimit1?(1!=this.limitState1&&(this.limitState1=1,this.limitImpulse1=0),this.limitVelocity1=this.upperLimit1-o,m||(o=this.upperLimit1)):(this.limitState1=2,this.limitImpulse1=0,this.limitVelocity1=0),m||(this.limitVelocity1>.005?this.limitVelocity1-=.005:this.limitVelocity1<-.005?this.limitVelocity1+=.005:this.limitVelocity1=0)):(this.limitState1=2,this.limitImpulse1=0),f?(this.lowerLimit2==this.upperLimit2?(0!=this.limitState2&&(this.limitState2=0,this.limitImpulse2=0),this.limitVelocity2=this.lowerLimit2-r,d||(r=this.lowerLimit2)):r<this.lowerLimit2?(-1!=this.limitState2&&(this.limitState2=-1,this.limitImpulse2=0),this.limitVelocity2=this.lowerLimit2-r,d||(r=this.lowerLimit2)):r>this.upperLimit2?(1!=this.limitState2&&(this.limitState2=1,this.limitImpulse2=0),this.limitVelocity2=this.upperLimit2-r,d||(r=this.upperLimit2)):(this.limitState2=2,this.limitImpulse2=0,this.limitVelocity2=0),d||(this.limitVelocity2>.005?this.limitVelocity2-=.005:this.limitVelocity2<-.005?this.limitVelocity2+=.005:this.limitVelocity2=0)):(this.limitState2=2,this.limitImpulse2=0),v?(this.lowerLimit3==this.upperLimit3?(0!=this.limitState3&&(this.limitState3=0,this.limitImpulse3=0),this.limitVelocity3=this.lowerLimit3-l,y||(l=this.lowerLimit3)):l<this.lowerLimit3?(-1!=this.limitState3&&(this.limitState3=-1,this.limitImpulse3=0),this.limitVelocity3=this.lowerLimit3-l,y||(l=this.lowerLimit3)):l>this.upperLimit3?(1!=this.limitState3&&(this.limitState3=1,this.limitImpulse3=0),this.limitVelocity3=this.upperLimit3-l,y||(l=this.upperLimit3)):(this.limitState3=2,this.limitImpulse3=0,this.limitVelocity3=0),y||(this.limitVelocity3>.005?this.limitVelocity3-=.005:this.limitVelocity3<-.005?this.limitVelocity3+=.005:this.limitVelocity3=0)):(this.limitState3=2,this.limitImpulse3=0),this.enableMotor1&&(0!=this.limitState1||m)?this.maxMotorImpulse1=this.maxMotorForce1*t:(this.motorImpulse1=0,this.maxMotorImpulse1=0),this.enableMotor2&&(0!=this.limitState2||d)?this.maxMotorImpulse2=this.maxMotorForce2*t:(this.motorImpulse2=0,this.maxMotorImpulse2=0),this.enableMotor3&&(0!=this.limitState3||y)?this.maxMotorImpulse3=this.maxMotorForce3*t:(this.motorImpulse3=0,this.maxMotorImpulse3=0);var b=o*this.ax1+r*this.ax2+l*this.ax2,z=o*this.ay1+r*this.ay2+l*this.ay2,N=o*this.az1+r*this.az2+l*this.az2,g=this.m2/(this.m1+this.m2);this.weight>=0&&(g=this.weight);var w=1-g;this.r1x=this.r1.x+b*g,this.r1y=this.r1.y+z*g,this.r1z=this.r1.z+N*g,this.r2x=this.r2.x-b*w,this.r2y=this.r2.y-z*w,this.r2z=this.r2.z-N*w,this.t1x1=this.r1y*this.az1-this.r1z*this.ay1,this.t1y1=this.r1z*this.ax1-this.r1x*this.az1,this.t1z1=this.r1x*this.ay1-this.r1y*this.ax1,this.t2x1=this.r2y*this.az1-this.r2z*this.ay1,this.t2y1=this.r2z*this.ax1-this.r2x*this.az1,this.t2z1=this.r2x*this.ay1-this.r2y*this.ax1,this.l1x1=this.ax1*this.m1,this.l1y1=this.ay1*this.m1,this.l1z1=this.az1*this.m1,this.l2x1=this.ax1*this.m2,this.l2y1=this.ay1*this.m2,this.l2z1=this.az1*this.m2,this.a1x1=this.t1x1*this.i1e00+this.t1y1*this.i1e01+this.t1z1*this.i1e02,this.a1y1=this.t1x1*this.i1e10+this.t1y1*this.i1e11+this.t1z1*this.i1e12,this.a1z1=this.t1x1*this.i1e20+this.t1y1*this.i1e21+this.t1z1*this.i1e22,this.a2x1=this.t2x1*this.i2e00+this.t2y1*this.i2e01+this.t2z1*this.i2e02,this.a2y1=this.t2x1*this.i2e10+this.t2y1*this.i2e11+this.t2z1*this.i2e12,this.a2z1=this.t2x1*this.i2e20+this.t2y1*this.i2e21+this.t2z1*this.i2e22,this.t1x2=this.r1y*this.az2-this.r1z*this.ay2,this.t1y2=this.r1z*this.ax2-this.r1x*this.az2,this.t1z2=this.r1x*this.ay2-this.r1y*this.ax2,this.t2x2=this.r2y*this.az2-this.r2z*this.ay2,this.t2y2=this.r2z*this.ax2-this.r2x*this.az2,this.t2z2=this.r2x*this.ay2-this.r2y*this.ax2,this.l1x2=this.ax2*this.m1,this.l1y2=this.ay2*this.m1,this.l1z2=this.az2*this.m1,this.l2x2=this.ax2*this.m2,this.l2y2=this.ay2*this.m2,this.l2z2=this.az2*this.m2,this.a1x2=this.t1x2*this.i1e00+this.t1y2*this.i1e01+this.t1z2*this.i1e02,this.a1y2=this.t1x2*this.i1e10+this.t1y2*this.i1e11+this.t1z2*this.i1e12,this.a1z2=this.t1x2*this.i1e20+this.t1y2*this.i1e21+this.t1z2*this.i1e22,this.a2x2=this.t2x2*this.i2e00+this.t2y2*this.i2e01+this.t2z2*this.i2e02,this.a2y2=this.t2x2*this.i2e10+this.t2y2*this.i2e11+this.t2z2*this.i2e12,this.a2z2=this.t2x2*this.i2e20+this.t2y2*this.i2e21+this.t2z2*this.i2e22,this.t1x3=this.r1y*this.az3-this.r1z*this.ay3,this.t1y3=this.r1z*this.ax3-this.r1x*this.az3,this.t1z3=this.r1x*this.ay3-this.r1y*this.ax3,this.t2x3=this.r2y*this.az3-this.r2z*this.ay3,this.t2y3=this.r2z*this.ax3-this.r2x*this.az3,this.t2z3=this.r2x*this.ay3-this.r2y*this.ax3,this.l1x3=this.ax3*this.m1,this.l1y3=this.ay3*this.m1,this.l1z3=this.az3*this.m1,this.l2x3=this.ax3*this.m2,this.l2y3=this.ay3*this.m2,this.l2z3=this.az3*this.m2,this.a1x3=this.t1x3*this.i1e00+this.t1y3*this.i1e01+this.t1z3*this.i1e02,this.a1y3=this.t1x3*this.i1e10+this.t1y3*this.i1e11+this.t1z3*this.i1e12,this.a1z3=this.t1x3*this.i1e20+this.t1y3*this.i1e21+this.t1z3*this.i1e22,this.a2x3=this.t2x3*this.i2e00+this.t2y3*this.i2e01+this.t2z3*this.i2e02,this.a2y3=this.t2x3*this.i2e10+this.t2y3*this.i2e11+this.t2z3*this.i2e12,this.a2z3=this.t2x3*this.i2e20+this.t2y3*this.i2e21+this.t2z3*this.i2e22;var k=this.m1+this.m2;if(this.k00=(this.ax1*this.ax1+this.ay1*this.ay1+this.az1*this.az1)*k,this.k01=(this.ax1*this.ax2+this.ay1*this.ay2+this.az1*this.az2)*k,this.k02=(this.ax1*this.ax3+this.ay1*this.ay3+this.az1*this.az3)*k,this.k10=(this.ax2*this.ax1+this.ay2*this.ay1+this.az2*this.az1)*k,this.k11=(this.ax2*this.ax2+this.ay2*this.ay2+this.az2*this.az2)*k,this.k12=(this.ax2*this.ax3+this.ay2*this.ay3+this.az2*this.az3)*k,this.k20=(this.ax3*this.ax1+this.ay3*this.ay1+this.az3*this.az1)*k,this.k21=(this.ax3*this.ax2+this.ay3*this.ay2+this.az3*this.az2)*k,this.k22=(this.ax3*this.ax3+this.ay3*this.ay3+this.az3*this.az3)*k,this.k00+=this.t1x1*this.a1x1+this.t1y1*this.a1y1+this.t1z1*this.a1z1,this.k01+=this.t1x1*this.a1x2+this.t1y1*this.a1y2+this.t1z1*this.a1z2,this.k02+=this.t1x1*this.a1x3+this.t1y1*this.a1y3+this.t1z1*this.a1z3,this.k10+=this.t1x2*this.a1x1+this.t1y2*this.a1y1+this.t1z2*this.a1z1,this.k11+=this.t1x2*this.a1x2+this.t1y2*this.a1y2+this.t1z2*this.a1z2,this.k12+=this.t1x2*this.a1x3+this.t1y2*this.a1y3+this.t1z2*this.a1z3,this.k20+=this.t1x3*this.a1x1+this.t1y3*this.a1y1+this.t1z3*this.a1z1,this.k21+=this.t1x3*this.a1x2+this.t1y3*this.a1y2+this.t1z3*this.a1z2,this.k22+=this.t1x3*this.a1x3+this.t1y3*this.a1y3+this.t1z3*this.a1z3,this.k00+=this.t2x1*this.a2x1+this.t2y1*this.a2y1+this.t2z1*this.a2z1,this.k01+=this.t2x1*this.a2x2+this.t2y1*this.a2y2+this.t2z1*this.a2z2,this.k02+=this.t2x1*this.a2x3+this.t2y1*this.a2y3+this.t2z1*this.a2z3,this.k10+=this.t2x2*this.a2x1+this.t2y2*this.a2y1+this.t2z2*this.a2z1,this.k11+=this.t2x2*this.a2x2+this.t2y2*this.a2y2+this.t2z2*this.a2z2,this.k12+=this.t2x2*this.a2x3+this.t2y2*this.a2y3+this.t2z2*this.a2z3,this.k20+=this.t2x3*this.a2x1+this.t2y3*this.a2y1+this.t2z3*this.a2z1,this.k21+=this.t2x3*this.a2x2+this.t2y3*this.a2y2+this.t2z3*this.a2z2,this.k22+=this.t2x3*this.a2x3+this.t2y3*this.a2y3+this.t2z3*this.a2z3,this.kv00=this.k00,this.kv11=this.k11,this.kv22=this.k22,this.dv00=1/this.kv00,this.dv11=1/this.kv11,this.dv22=1/this.kv22,m&&2!=this.limitState1){var M=6.2831853*c,I=M*M*t,S=i/(I+2*this.limitMotor1.dampingRatio*M);this.cfm1=this.kv00*S,this.limitVelocity1*=I*S}else this.cfm1=0,this.limitVelocity1*=.05*i;d&&2!=this.limitState2?(S=i/((I=(M=6.2831853*u)*M*t)+2*this.limitMotor2.dampingRatio*M),this.cfm2=this.kv11*S,this.limitVelocity2*=I*S):(this.cfm2=0,this.limitVelocity2*=.05*i),y&&2!=this.limitState3?(S=i/((I=(M=6.2831853*p)*M*t)+2*this.limitMotor3.dampingRatio*M),this.cfm3=this.kv22*S,this.limitVelocity3*=I*S):(this.cfm3=0,this.limitVelocity3*=.05*i),this.k00+=this.cfm1,this.k11+=this.cfm2,this.k22+=this.cfm3;var P=1/(this.k00*(this.k11*this.k22-this.k21*this.k12)+this.k10*(this.k21*this.k02-this.k01*this.k22)+this.k20*(this.k01*this.k12-this.k11*this.k02));this.d00=(this.k11*this.k22-this.k12*this.k21)*P,this.d01=(this.k02*this.k21-this.k01*this.k22)*P,this.d02=(this.k01*this.k12-this.k02*this.k11)*P,this.d10=(this.k12*this.k20-this.k10*this.k22)*P,this.d11=(this.k00*this.k22-this.k02*this.k20)*P,this.d12=(this.k02*this.k10-this.k00*this.k12)*P,this.d20=(this.k10*this.k21-this.k11*this.k20)*P,this.d21=(this.k01*this.k20-this.k00*this.k21)*P,this.d22=(this.k00*this.k11-this.k01*this.k10)*P;var T=this.limitImpulse1+this.motorImpulse1,L=this.limitImpulse2+this.motorImpulse2,_=this.limitImpulse3+this.motorImpulse3;this.l1.x+=T*this.l1x1+L*this.l1x2+_*this.l1x3,this.l1.y+=T*this.l1y1+L*this.l1y2+_*this.l1y3,this.l1.z+=T*this.l1z1+L*this.l1z2+_*this.l1z3,this.a1.x+=T*this.a1x1+L*this.a1x2+_*this.a1x3,this.a1.y+=T*this.a1y1+L*this.a1y2+_*this.a1y3,this.a1.z+=T*this.a1z1+L*this.a1z2+_*this.a1z3,this.l2.x-=T*this.l2x1+L*this.l2x2+_*this.l2x3,this.l2.y-=T*this.l2y1+L*this.l2y2+_*this.l2y3,this.l2.z-=T*this.l2z1+L*this.l2z2+_*this.l2z3,this.a2.x-=T*this.a2x1+L*this.a2x2+_*this.a2x3,this.a2.y-=T*this.a2y1+L*this.a2y2+_*this.a2y3,this.a2.z-=T*this.a2z1+L*this.a2z2+_*this.a2z3},solve:function(){var t=this.l2.x-this.l1.x+this.a2.y*this.r2z-this.a2.z*this.r2y-this.a1.y*this.r1z+this.a1.z*this.r1y,i=this.l2.y-this.l1.y+this.a2.z*this.r2x-this.a2.x*this.r2z-this.a1.z*this.r1x+this.a1.x*this.r1z,s=this.l2.z-this.l1.z+this.a2.x*this.r2y-this.a2.y*this.r2x-this.a1.x*this.r1y+this.a1.y*this.r1x,e=t*this.ax1+i*this.ay1+s*this.az1,h=t*this.ax2+i*this.ay2+s*this.az2,n=t*this.ax3+i*this.ay3+s*this.az3,a=this.motorImpulse1,o=this.motorImpulse2,r=this.motorImpulse3,l=0,c=0,u=0;this.enableMotor1&&(l=(e-this.motorSpeed1)*this.dv00,this.motorImpulse1+=l,this.motorImpulse1>this.maxMotorImpulse1?this.motorImpulse1=this.maxMotorImpulse1:this.motorImpulse1<-this.maxMotorImpulse1&&(this.motorImpulse1=-this.maxMotorImpulse1),l=this.motorImpulse1-a),this.enableMotor2&&(c=(h-this.motorSpeed2)*this.dv11,this.motorImpulse2+=c,this.motorImpulse2>this.maxMotorImpulse2?this.motorImpulse2=this.maxMotorImpulse2:this.motorImpulse2<-this.maxMotorImpulse2&&(this.motorImpulse2=-this.maxMotorImpulse2),c=this.motorImpulse2-o),this.enableMotor3&&(u=(n-this.motorSpeed3)*this.dv22,this.motorImpulse3+=u,this.motorImpulse3>this.maxMotorImpulse3?this.motorImpulse3=this.maxMotorImpulse3:this.motorImpulse3<-this.maxMotorImpulse3&&(this.motorImpulse3=-this.maxMotorImpulse3),u=this.motorImpulse3-r),e+=l*this.kv00+c*this.k01+u*this.k02,h+=l*this.k10+c*this.kv11+u*this.k12,n+=l*this.k20+c*this.k21+u*this.kv22,e-=this.limitVelocity1+this.limitImpulse1*this.cfm1,h-=this.limitVelocity2+this.limitImpulse2*this.cfm2,n-=this.limitVelocity3+this.limitImpulse3*this.cfm3;var p=this.limitImpulse1,m=this.limitImpulse2,d=this.limitImpulse3,y=e*this.d00+h*this.d01+n*this.d02,x=e*this.d10+h*this.d11+n*this.d12,f=e*this.d20+h*this.d21+n*this.d22;this.limitImpulse1+=y,this.limitImpulse2+=x,this.limitImpulse3+=f;var v,b=0;switch((2==this.limitState1||this.limitImpulse1*this.limitState1<0)&&(h+=(y=-p)*this.k10,n+=y*this.k20,b|=1),(2==this.limitState2||this.limitImpulse2*this.limitState2<0)&&(e+=(x=-m)*this.k01,n+=x*this.k21,b|=2),(2==this.limitState3||this.limitImpulse3*this.limitState3<0)&&(e+=(f=-d)*this.k02,h+=f*this.k12,b|=4),b){case 1:v=1/(this.k11*this.k22-this.k12*this.k21),x=(this.k22*h+-this.k12*n)*v,f=(-this.k21*h+this.k11*n)*v;break;case 2:v=1/(this.k00*this.k22-this.k02*this.k20),y=(this.k22*e+-this.k02*n)*v,f=(-this.k20*e+this.k00*n)*v;break;case 3:f=n/this.k22;break;case 4:v=1/(this.k00*this.k11-this.k01*this.k10),y=(this.k11*e+-this.k01*h)*v,x=(-this.k10*e+this.k00*h)*v;break;case 5:x=h/this.k11;break;case 6:y=e/this.k00}this.limitImpulse1=p+y,this.limitImpulse2=m+x,this.limitImpulse3=d+f;var z=l+y,N=c+x,g=u+f;this.l1.x+=z*this.l1x1+N*this.l1x2+g*this.l1x3,this.l1.y+=z*this.l1y1+N*this.l1y2+g*this.l1y3,this.l1.z+=z*this.l1z1+N*this.l1z2+g*this.l1z3,this.a1.x+=z*this.a1x1+N*this.a1x2+g*this.a1x3,this.a1.y+=z*this.a1y1+N*this.a1y2+g*this.a1y3,this.a1.z+=z*this.a1z1+N*this.a1z2+g*this.a1z3,this.l2.x-=z*this.l2x1+N*this.l2x2+g*this.l2x3,this.l2.y-=z*this.l2y1+N*this.l2y2+g*this.l2y3,this.l2.z-=z*this.l2z1+N*this.l2z2+g*this.l2z3,this.a2.x-=z*this.a2x1+N*this.a2x2+g*this.a2x3,this.a2.y-=z*this.a2y1+N*this.a2y2+g*this.a2y3,this.a2.z-=z*this.a2z1+N*this.a2z2+g*this.a2z3}}),F.prototype=Object.assign(Object.create(_.prototype),{constructor:F,preSolve:function(t,i){this.updateAnchorPoints(),this.ax1.copy(this.localAxis1).applyMatrix3(this.body1.rotation,!0),this.ax2.copy(this.localAxis2).applyMatrix3(this.body2.rotation,!0),this.nor.set(this.ax1.x*this.body2.inverseMass+this.ax2.x*this.body1.inverseMass,this.ax1.y*this.body2.inverseMass+this.ax2.y*this.body1.inverseMass,this.ax1.z*this.body2.inverseMass+this.ax2.z*this.body1.inverseMass).normalize(),this.tan.tangent(this.nor).normalize(),this.bin.crossVectors(this.nor,this.tan),this.ac.preSolve(t,i),this.t3.preSolve(t,i)},solve:function(){this.ac.solve(),this.t3.solve()},postSolve:function(){}}),B.prototype=Object.assign(Object.create(_.prototype),{constructor:B,preSolve:function(t,i){this.updateAnchorPoints(),this.ax1.copy(this.localAxis1).applyMatrix3(this.body1.rotation,!0),this.an1.copy(this.localAngle1).applyMatrix3(this.body1.rotation,!0),this.ax2.copy(this.localAxis2).applyMatrix3(this.body2.rotation,!0),this.an2.copy(this.localAngle2).applyMatrix3(this.body2.rotation,!0),this.nor.set(this.ax1.x*this.body2.inverseMass+this.ax2.x*this.body1.inverseMass,this.ax1.y*this.body2.inverseMass+this.ax2.y*this.body1.inverseMass,this.ax1.z*this.body2.inverseMass+this.ax2.z*this.body1.inverseMass).normalize(),this.tan.tangent(this.nor).normalize(),this.bin.crossVectors(this.nor,this.tan),this.tmp.crossVectors(this.an1,this.an2);var s=m.acosClamp(m.dotVectors(this.an1,this.an2));m.dotVectors(this.nor,this.tmp)<0?this.rotationalLimitMotor.angle=-s:this.rotationalLimitMotor.angle=s,this.tmp.crossVectors(this.ax1,this.ax2),this.r3.limitMotor2.angle=m.dotVectors(this.tan,this.tmp),this.r3.limitMotor3.angle=m.dotVectors(this.bin,this.tmp),this.r3.preSolve(t,i),this.t3.preSolve(t,i)},solve:function(){this.r3.solve(),this.t3.solve()},postSolve:function(){}}),U.prototype=Object.assign(Object.create(_.prototype),{constructor:U,preSolve:function(t,i){this.updateAnchorPoints(),this.ax1.copy(this.localAxis1).applyMatrix3(this.body1.rotation,!0),this.an1.copy(this.localAngle1).applyMatrix3(this.body1.rotation,!0),this.ax2.copy(this.localAxis2).applyMatrix3(this.body2.rotation,!0),this.an2.copy(this.localAngle2).applyMatrix3(this.body2.rotation,!0),this.r3.limitMotor1.angle=m.dotVectors(this.ax1,this.ax2);var s=m.dotVectors(this.an1,this.ax2);m.dotVectors(this.ax1,this.tmp.crossVectors(this.an1,this.ax2))<0?this.rotationalLimitMotor1.angle=-s:this.rotationalLimitMotor1.angle=s,s=m.dotVectors(this.an2,this.ax1),m.dotVectors(this.ax2,this.tmp.crossVectors(this.an2,this.ax1))<0?this.rotationalLimitMotor2.angle=-s:this.rotationalLimitMotor2.angle=s,this.nor.crossVectors(this.ax1,this.ax2).normalize(),this.tan.crossVectors(this.nor,this.ax2).normalize(),this.bin.crossVectors(this.nor,this.ax1).normalize(),this.r3.preSolve(t,i),this.t3.preSolve(t,i)},solve:function(){this.r3.solve(),this.t3.solve()},postSolve:function(){}}),Z.prototype={constructor:Z,reset:function(t,i){this.body1=t.parent,this.body2=i.parent,this.numPoints=0},addPointVec:function(t,i,s,e){var h=this.points[this.numPoints++];h.position.copy(t),h.localPoint1.sub(t,this.body1.position).applyMatrix3(this.body1.rotation),h.localPoint2.sub(t,this.body2.position).applyMatrix3(this.body2.rotation),h.normal.copy(i),e&&h.normal.negate(),h.normalImpulse=0,h.penetration=s,h.warmStarted=!1},addPoint:function(t,i,s,e,h,n,a,o){var r=this.points[this.numPoints++];r.position.set(t,i,s),r.localPoint1.sub(r.position,this.body1.position).applyMatrix3(this.body1.rotation),r.localPoint2.sub(r.position,this.body2.position).applyMatrix3(this.body2.rotation),r.normalImpulse=0,r.normal.set(e,h,n),o&&r.normal.negate(),r.penetration=a,r.warmStarted=!1}},K.prototype=Object.assign(Object.create(T.prototype),{constructor:K,attach:function(){this.p1=this.body1.position,this.p2=this.body2.position,this.lv1=this.body1.linearVelocity,this.av1=this.body1.angularVelocity,this.lv2=this.body2.linearVelocity,this.av2=this.body2.angularVelocity,this.i1=this.body1.inverseInertia,this.i2=this.body2.inverseInertia},detach:function(){this.p1=null,this.p2=null,this.lv1=null,this.lv2=null,this.av1=null,this.av2=null,this.i1=null,this.i2=null},preSolve:function(t,i){this.m1=this.body1.inverseMass,this.m2=this.body2.inverseMass;var s=this.m1+this.m2;this.num=this.manifold.numPoints;for(var e,h,n,a,o,r,l,c=this.cs,u=0;u<this.num;u++)e=this.ps[u],this.tmpP1.sub(e.position,this.p1),this.tmpP2.sub(e.position,this.p2),this.tmpC1.crossVectors(this.av1,this.tmpP1),this.tmpC2.crossVectors(this.av2,this.tmpP2),c.norImp=e.normalImpulse,c.tanImp=e.tangentImpulse,c.binImp=e.binormalImpulse,c.nor.copy(e.normal),this.tmp.set(this.lv2.x+this.tmpC2.x-(this.lv1.x+this.tmpC1.x),this.lv2.y+this.tmpC2.y-(this.lv1.y+this.tmpC1.y),this.lv2.z+this.tmpC2.z-(this.lv1.z+this.tmpC1.z)),h=m.dotVectors(c.nor,this.tmp),c.tan.set(this.tmp.x-h*c.nor.x,this.tmp.y-h*c.nor.y,this.tmp.z-h*c.nor.z),m.dotVectors(c.tan,c.tan)<=.04&&c.tan.tangent(c.nor),c.tan.normalize(),c.bin.crossVectors(c.nor,c.tan),c.norU1.scale(c.nor,this.m1),c.norU2.scale(c.nor,this.m2),c.tanU1.scale(c.tan,this.m1),c.tanU2.scale(c.tan,this.m2),c.binU1.scale(c.bin,this.m1),c.binU2.scale(c.bin,this.m2),c.norT1.crossVectors(this.tmpP1,c.nor),c.tanT1.crossVectors(this.tmpP1,c.tan),c.binT1.crossVectors(this.tmpP1,c.bin),c.norT2.crossVectors(this.tmpP2,c.nor),c.tanT2.crossVectors(this.tmpP2,c.tan),c.binT2.crossVectors(this.tmpP2,c.bin),r=this.i1,l=this.i2,c.norTU1.copy(c.norT1).applyMatrix3(r,!0),c.tanTU1.copy(c.tanT1).applyMatrix3(r,!0),c.binTU1.copy(c.binT1).applyMatrix3(r,!0),c.norTU2.copy(c.norT2).applyMatrix3(l,!0),c.tanTU2.copy(c.tanT2).applyMatrix3(l,!0),c.binTU2.copy(c.binT2).applyMatrix3(l,!0),this.tmpC1.crossVectors(c.norTU1,this.tmpP1),this.tmpC2.crossVectors(c.norTU2,this.tmpP2),this.tmp.add(this.tmpC1,this.tmpC2),c.norDen=1/(s+m.dotVectors(c.nor,this.tmp)),this.tmpC1.crossVectors(c.tanTU1,this.tmpP1),this.tmpC2.crossVectors(c.tanTU2,this.tmpP2),this.tmp.add(this.tmpC1,this.tmpC2),c.tanDen=1/(s+m.dotVectors(c.tan,this.tmp)),this.tmpC1.crossVectors(c.binTU1,this.tmpP1),this.tmpC2.crossVectors(c.binTU2,this.tmpP2),this.tmp.add(this.tmpC1,this.tmpC2),c.binDen=1/(s+m.dotVectors(c.bin,this.tmp)),e.warmStarted?(n=e.normalImpulse,this.lv1.addScaledVector(c.norU1,n),this.av1.addScaledVector(c.norTU1,n),this.lv2.subScaledVector(c.norU2,n),this.av2.subScaledVector(c.norTU2,n),c.norImp=n,c.tanImp=0,c.binImp=0,h=0):(c.norImp=0,c.tanImp=0,c.binImp=0),h>-1&&(h=0),(a=this.restitution*-h)<(o=-(e.penetration+.005)*i*.05)&&(a=o),c.norTar=a,c.last=u==this.num-1,c=c.next},solve:function(){var t,i,s,e,h,n,a,o,r;this.tmplv1.copy(this.lv1),this.tmplv2.copy(this.lv2),this.tmpav1.copy(this.av1),this.tmpav2.copy(this.av2);for(var l=this.cs;h=l.norImp,n=l.tanImp,a=l.binImp,o=-h*this.friction,this.tmp.sub(this.tmplv2,this.tmplv1),t=n,s=a,(r=(n+=i=(m.dotVectors(this.tmp,l.tan)+m.dotVectors(this.tmpav2,l.tanT2)-m.dotVectors(this.tmpav1,l.tanT1))*l.tanDen)*n+(a+=(m.dotVectors(this.tmp,l.bin)+m.dotVectors(this.tmpav2,l.binT2)-m.dotVectors(this.tmpav1,l.binT1))*l.binDen)*a)>o*o&&(n*=r=o/m.sqrt(r),a*=r),i=n-t,e=a-s,this.tmp.set(l.tanU1.x*i+l.binU1.x*e,l.tanU1.y*i+l.binU1.y*e,l.tanU1.z*i+l.binU1.z*e),this.tmplv1.addEqual(this.tmp),this.tmp.set(l.tanTU1.x*i+l.binTU1.x*e,l.tanTU1.y*i+l.binTU1.y*e,l.tanTU1.z*i+l.binTU1.z*e),this.tmpav1.addEqual(this.tmp),this.tmp.set(l.tanU2.x*i+l.binU2.x*e,l.tanU2.y*i+l.binU2.y*e,l.tanU2.z*i+l.binU2.z*e),this.tmplv2.subEqual(this.tmp),this.tmp.set(l.tanTU2.x*i+l.binTU2.x*e,l.tanTU2.y*i+l.binTU2.y*e,l.tanTU2.z*i+l.binTU2.z*e),this.tmpav2.subEqual(this.tmp),this.tmp.sub(this.tmplv2,this.tmplv1),t=h,(h+=i=(m.dotVectors(this.tmp,l.nor)+m.dotVectors(this.tmpav2,l.norT2)-m.dotVectors(this.tmpav1,l.norT1)-l.norTar)*l.norDen)>0&&(h=0),i=h-t,this.tmplv1.addScaledVector(l.norU1,i),this.tmpav1.addScaledVector(l.norTU1,i),this.tmplv2.subScaledVector(l.norU2,i),this.tmpav2.subScaledVector(l.norTU2,i),l.norImp=h,l.tanImp=n,l.binImp=a,!l.last;)l=l.next;this.lv1.copy(this.tmplv1),this.lv2.copy(this.tmplv2),this.av1.copy(this.tmpav1),this.av2.copy(this.tmpav2)},postSolve:function(){for(var t,i=this.cs,s=this.num;s--;)(t=this.ps[s]).normal.copy(i.nor),t.tangent.copy(i.tan),t.binormal.copy(i.bin),t.normalImpulse=i.norImp,t.tangentImpulse=i.tanImp,t.binormalImpulse=i.binImp,t.normalDenominator=i.norDen,t.tangentDenominator=i.tanDen,t.binormalDenominator=i.binDen,i=i.next}}),Object.assign(G.prototype,{Contact:!0,mixRestitution:function(t,i){return m.sqrt(t*i)},mixFriction:function(t,i){return m.sqrt(t*i)},updateManifold:function(){this.constraint.restitution=this.mixRestitution(this.shape1.restitution,this.shape2.restitution),this.constraint.friction=this.mixFriction(this.shape1.friction,this.shape2.friction);for(var t=this.manifold.numPoints,i=t;i--;){var s=this.buffer[i],e=this.points[i];s.lp1X=e.localPoint1.x,s.lp1Y=e.localPoint1.y,s.lp1Z=e.localPoint1.z,s.lp2X=e.localPoint2.x,s.lp2Y=e.localPoint2.y,s.lp2Z=e.localPoint2.z,s.impulse=e.normalImpulse}this.manifold.numPoints=0,this.detector.detectCollision(this.shape1,this.shape2,this.manifold);var h=this.manifold.numPoints;if(0==h)return this.touching=!1,this.close=!1,void(this.dist=m.INF);for((this.touching||this.dist<.001)&&(this.close=!0),this.touching=!0,i=h;i--;){for(var n=(e=this.points[i]).localPoint1.x,a=e.localPoint1.y,o=e.localPoint1.z,r=e.localPoint2.x,l=e.localPoint2.y,c=e.localPoint2.z,u=-1,p=4e-4,d=t;d--;){var y=(s=this.buffer[d]).lp1X-n,x=s.lp1Y-a,f=s.lp1Z-o,v=y*y+x*x+f*f,b=(y=s.lp2X-r)*y+(x=s.lp2Y-l)*x+(f=s.lp2Z-c)*f;v<b?v<p&&(p=v,u=d):b<p&&(p=b,u=d),p<this.dist&&(this.dist=p)}if(-1!=u){var z=this.buffer[u];this.buffer[u]=this.buffer[--t],this.buffer[t]=z,e.normalImpulse=z.impulse,e.warmStarted=!0}else e.normalImpulse=0,e.warmStarted=!1}},attach:function(t,i){this.shape1=t,this.shape2=i,this.body1=t.parent,this.body2=i.parent,this.manifold.body1=this.body1,this.manifold.body2=this.body2,this.constraint.body1=this.body1,this.constraint.body2=this.body2,this.constraint.attach(),this.s1Link.shape=i,this.s1Link.body=this.body2,this.s2Link.shape=t,this.s2Link.body=this.body1,null!=t.contactLink?(this.s1Link.next=t.contactLink).prev=this.s1Link:this.s1Link.next=null,t.contactLink=this.s1Link,t.numContacts++,null!=i.contactLink?(this.s2Link.next=i.contactLink).prev=this.s2Link:this.s2Link.next=null,i.contactLink=this.s2Link,i.numContacts++,this.b1Link.shape=i,this.b1Link.body=this.body2,this.b2Link.shape=t,this.b2Link.body=this.body1,null!=this.body1.contactLink?(this.b1Link.next=this.body1.contactLink).prev=this.b1Link:this.b1Link.next=null,this.body1.contactLink=this.b1Link,this.body1.numContacts++,null!=this.body2.contactLink?(this.b2Link.next=this.body2.contactLink).prev=this.b2Link:this.b2Link.next=null,this.body2.contactLink=this.b2Link,this.body2.numContacts++,this.prev=null,this.next=null,this.persisting=!0,this.sleeping=this.body1.sleeping&&this.body2.sleeping,this.manifold.numPoints=0},detach:function(){var t=this.s1Link.prev,i=this.s1Link.next;null!==t&&(t.next=i),null!==i&&(i.prev=t),this.shape1.contactLink==this.s1Link&&(this.shape1.contactLink=i),this.s1Link.prev=null,this.s1Link.next=null,this.s1Link.shape=null,this.s1Link.body=null,this.shape1.numContacts--,t=this.s2Link.prev,i=this.s2Link.next,null!==t&&(t.next=i),null!==i&&(i.prev=t),this.shape2.contactLink==this.s2Link&&(this.shape2.contactLink=i),this.s2Link.prev=null,this.s2Link.next=null,this.s2Link.shape=null,this.s2Link.body=null,this.shape2.numContacts--,t=this.b1Link.prev,i=this.b1Link.next,null!==t&&(t.next=i),null!==i&&(i.prev=t),this.body1.contactLink==this.b1Link&&(this.body1.contactLink=i),this.b1Link.prev=null,this.b1Link.next=null,this.b1Link.shape=null,this.b1Link.body=null,this.body1.numContacts--,t=this.b2Link.prev,i=this.b2Link.next,null!==t&&(t.next=i),null!==i&&(i.prev=t),this.body2.contactLink==this.b2Link&&(this.body2.contactLink=i),this.b2Link.prev=null,this.b2Link.next=null,this.b2Link.shape=null,this.b2Link.body=null,this.body2.numContacts--,this.manifold.body1=null,this.manifold.body2=null,this.constraint.body1=null,this.constraint.body2=null,this.constraint.detach(),this.shape1=null,this.shape2=null,this.body1=null,this.body2=null}}),Object.assign(Q.prototype,{setParent:function(t){this.parent=t,this.scale=this.parent.scale,this.invScale=this.parent.invScale,this.id=this.parent.numRigidBodies,this.name||(this.name=this.id),this.updateMesh()},addShape:function(t){t.parent&&d("RigidBody","It is not possible that you add a shape which already has an associated body."),null!=this.shapes&&((this.shapes.prev=t).next=this.shapes),this.shapes=t,t.parent=this,this.parent&&this.parent.addShape(t),this.numShapes++},removeShape:function(t){var i=t;if(i.parent==this){var s=i.prev,e=i.next;null!=s&&(s.next=e),null!=e&&(e.prev=s),this.shapes==i&&(this.shapes=e),i.prev=null,i.next=null,i.parent=null,this.parent&&this.parent.removeShape(i),this.numShapes--}},remove:function(){this.dispose()},dispose:function(){this.parent.removeRigidBody(this)},checkContact:function(t){this.parent.checkContact(this.name,t)},setupMass:function(t,i){var s=void 0===i||i;this.type=t||2,this.isDynamic=1===this.type,this.isStatic=2===this.type,this.mass=0,this.localInertia.set(0,0,0,0,0,0,0,0,0);for(var e=new v,h=new x,n=this.shapes;null!==n;n=n.next){n.calculateMassInfo(this.massInfo);var a=this.massInfo.mass;h.addScaledVector(n.relativePosition,a),this.mass+=a,this.rotateInertia(n.relativeRotation,this.massInfo.inertia,e),this.localInertia.add(e),this.localInertia.addOffset(a,n.relativePosition)}if(this.inverseMass=1/this.mass,h.scaleEqual(this.inverseMass),s){for(this.position.add(h),n=this.shapes;null!==n;n=n.next)n.relativePosition.subEqual(h);this.localInertia.subOffset(this.mass,h)}this.inverseLocalInertia.invert(this.localInertia),2===this.type&&(this.inverseMass=0,this.inverseLocalInertia.set(0,0,0,0,0,0,0,0,0)),this.syncShapes(),this.awake()},awake:function(){if(this.allowSleep&&this.sleeping){this.sleeping=!1,this.sleepTime=0;for(var t=this.contactLink;null!=t;)t.body.sleepTime=0,t.body.sleeping=!1,t=t.next;for(var i=this.jointLink;null!=i;)i.body.sleepTime=0,i.body.sleeping=!1,i=i.next;for(var s=this.shapes;null!=s;s=s.next)s.updateProxy()}},sleep:function(){if(this.allowSleep&&!this.sleeping){this.linearVelocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.sleepPosition.copy(this.position),this.sleepOrientation.copy(this.orientation),this.sleepTime=0,this.sleeping=!0;for(var t=this.shapes;null!=t;t=t.next)t.updateProxy()}},testWakeUp:function(){(this.linearVelocity.testZero()||this.angularVelocity.testZero()||this.position.testDiff(this.sleepPosition)||this.orientation.testDiff(this.sleepOrientation))&&this.awake()},isLonely:function(){return 0==this.numJoints&&0==this.numContacts},updatePosition:function(t){switch(this.type){case 2:this.linearVelocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.controlPos&&(this.position.copy(this.newPosition),this.controlPos=!1),this.controlRot&&(this.orientation.copy(this.newOrientation),this.controlRot=!1);break;case 1:this.isKinematic&&(this.linearVelocity.set(0,0,0),this.angularVelocity.set(0,0,0)),this.controlPos&&(this.linearVelocity.subVectors(this.newPosition,this.position).multiplyScalar(1/t),this.controlPos=!1),this.controlRot&&(this.angularVelocity.copy(this.getAxis()),this.orientation.copy(this.newOrientation),this.controlRot=!1),this.position.addScaledVector(this.linearVelocity,t),this.orientation.addTime(this.angularVelocity,t),this.updateMesh();break;default:d("RigidBody","Invalid type.")}this.syncShapes(),this.updateMesh()},getAxis:function(){return new x(0,1,0).applyMatrix3(this.inverseLocalInertia,!0).normalize()},rotateInertia:function(t,i,s){this.tmpInertia.multiplyMatrices(t,i),s.multiplyMatrices(this.tmpInertia,t,!0)},syncShapes:function(){this.rotation.setQuat(this.orientation),this.rotateInertia(this.rotation,this.inverseLocalInertia,this.inverseInertia);for(var t=this.shapes;null!=t;t=t.next)t.position.copy(t.relativePosition).applyMatrix3(this.rotation,!0).add(this.position),t.rotation.multiplyMatrices(this.rotation,t.relativeRotation),t.updateProxy()},applyImpulse:function(t,i){this.linearVelocity.addScaledVector(i,this.inverseMass);var s=(new x).copy(t).sub(this.position).cross(i).applyMatrix3(this.inverseInertia,!0);this.angularVelocity.add(s)},setPosition:function(t){this.newPosition.copy(t).multiplyScalar(this.invScale),this.controlPos=!0,this.isKinematic||(this.isKinematic=!0)},setQuaternion:function(t){this.newOrientation.set(t.x,t.y,t.z,t.w),this.controlRot=!0,this.isKinematic||(this.isKinematic=!0)},setRotation:function(t){this.newOrientation=(new f).setFromEuler(t.x*m.degtorad,t.y*m.degtorad,t.z*m.degtorad),this.controlRot=!0},resetPosition:function(t,i,s){this.linearVelocity.set(0,0,0),this.angularVelocity.set(0,0,0),this.position.set(t,i,s).multiplyScalar(this.invScale),this.awake()},resetQuaternion:function(t){this.angularVelocity.set(0,0,0),this.orientation=new f(t.x,t.y,t.z,t.w),this.awake()},resetRotation:function(t,i,s){this.angularVelocity.set(0,0,0),this.orientation=(new f).setFromEuler(t*m.degtorad,i*m.degtorad,s*m.degtorad),this.awake()},getPosition:function(){return this.pos},getQuaternion:function(){return this.quaternion},connectMesh:function(t){this.mesh=t,this.updateMesh()},updateMesh:function(){this.pos.scale(this.position,this.scale),this.quaternion.copy(this.orientation),null!==this.mesh&&(this.mesh.position.copy(this.getPosition()),this.mesh.quaternion.copy(this.getQuaternion()))}}),Object.assign(tt.prototype,{BroadPhase:!0,createProxy:function(t){d("BroadPhase","Inheritance error.")},addProxy:function(t){d("BroadPhase","Inheritance error.")},removeProxy:function(t){d("BroadPhase","Inheritance error.")},isAvailablePair:function(t,i){var s,e=t.parent,h=i.parent;if(!(e!=h&&(e.isDynamic||h.isDynamic)&&t.belongsTo&i.collidesWith&&i.belongsTo&t.collidesWith))return!1;for(s=e.numJoints<h.numJoints?e.jointLink:h.jointLink;null!==s;){var n=s.joint;if(!n.allowCollision&&(n.body1==e&&n.body2==h||n.body1==h&&n.body2==e))return!1;s=s.next}return!0},detectPairs:function(){this.pairs=[],this.numPairs=0,this.numPairChecks=0,this.collectPairs()},collectPairs:function(){},addPair:function(t,i){var s=new $(t,i);this.pairs.push(s),this.numPairs++}});var it=0;function st(t){this.shape=t,this.aabb=t.aabb}function et(t){st.call(this,t),this.id=it++}function ht(){tt.call(this),this.types=r,this.proxies=[]}function nt(){this.numElements=0,this.bufferSize=256,this.elements=[],this.elements.length=this.bufferSize,this.stack=new Float32Array(64)}function at(t,i){this.proxy=t,this.pair=null,this.min1=null,this.max1=null,this.min2=null,this.max2=null,this.max=i,this.value=0}function ot(t,i){st.call(this,i),this.belongsTo=0,this.max=[],this.min=[],this.sap=t,this.min[0]=new at(this,!1),this.max[0]=new at(this,!0),this.min[1]=new at(this,!1),this.max[1]=new at(this,!0),this.min[2]=new at(this,!1),this.max[2]=new at(this,!0),this.max[0].pair=this.min[0],this.max[1].pair=this.min[1],this.max[2].pair=this.min[2],this.min[0].min1=this.min[1],this.min[0].max1=this.max[1],this.min[0].min2=this.min[2],this.min[0].max2=this.max[2],this.min[1].min1=this.min[0],this.min[1].max1=this.max[0],this.min[1].min2=this.min[2],this.min[1].max2=this.max[2],this.min[2].min1=this.min[0],this.min[2].max1=this.max[0],this.min[2].min2=this.min[1],this.min[2].max2=this.max[1]}function rt(){tt.call(this),this.types=l,this.numElementsD=0,this.numElementsS=0,this.axesD=[new nt,new nt,new nt],this.axesS=[new nt,new nt,new nt],this.index1=0,this.index2=1}function lt(){this.child1=null,this.child2=null,this.parent=null,this.proxy=null,this.height=0,this.aabb=new b}function ct(){this.root=null,this.freeNodes=[],this.freeNodes.length=16384,this.numFreeNodes=0,this.aabb=new b}function ut(t){st.call(this,t),this.leaf=new lt,this.leaf.proxy=this}function pt(){tt.call(this),this.types=c,this.tree=new ct,this.stack=[],this.leaves=[],this.numLeaves=0}function mt(){this.flip=!1}function dt(){mt.call(this),this.clipVertices1=new Float32Array(24),this.clipVertices2=new Float32Array(24),this.used=new Float32Array(8),this.INF=1/0}function yt(t){mt.call(this),this.flip=t}function xt(){mt.call(this)}function ft(t){mt.call(this),this.flip=t}function vt(t){mt.call(this),this.flip=t}function bt(){mt.call(this)}function zt(t){mt.call(this),this.flip=t,this.n=new x,this.p=new x}function Nt(t){mt.call(this),this.flip=t,this.n=new x,this.p=new x,this.dix=new x,this.diy=new x,this.diz=new x,this.cc=new x,this.cc2=new x}function gt(t){switch(t instanceof Object||(t={}),this.scale=t.worldscale||1,this.invScale=1/this.scale,this.timeStep=t.timestep||.01666,this.timerate=1e3*this.timeStep,this.timer=null,this.preLoop=null,this.postLoop=null,this.numIterations=t.iterations||8,t.broadphase||2){case 1:this.broadPhase=new ht;break;case 2:default:this.broadPhase=new rt;break;case 3:this.broadPhase=new pt}this.Btypes=["None","BruteForce","Sweep & Prune","Bounding Volume Tree"],this.broadPhaseType=this.Btypes[t.broadphase||2],this.performance=null,this.isStat=void 0!==t.info&&t.info,this.isStat&&(this.performance=new y(this)),this.enableRandomizer=void 0===t.random||t.random,this.rigidBodies=null,this.numRigidBodies=0,this.contacts=null,this.unusedContacts=null,this.numContacts=0,this.numContactPoints=0,this.joints=null,this.numJoints=0,this.numIslands=0,this.gravity=new x(0,-9.8,0),void 0!==t.gravity&&this.gravity.fromArray(t.gravity),this.detectors=[],this.detectors.length=5;for(var i=5;i--;)this.detectors[i]=[],this.detectors[i].length=5;this.detectors[1][1]=new bt,this.detectors[1][2]=new ft(!1),this.detectors[2][1]=new ft(!0),this.detectors[2][2]=new dt,this.detectors[3][3]=new xt,this.detectors[3][2]=new yt(!0),this.detectors[2][3]=new yt(!1),this.detectors[3][1]=new vt(!0),this.detectors[1][3]=new vt(!1),this.detectors[4][1]=new zt(!0),this.detectors[1][4]=new zt(!1),this.detectors[4][2]=new Nt(!0),this.detectors[2][4]=new Nt(!1),this.randX=65535,this.randA=98765,this.randB=123456789,this.islandRigidBodies=[],this.islandStack=[],this.islandConstraints=[]}Object.assign(st.prototype,{Proxy:!0,update:function(){d("Proxy","Inheritance error.")}}),et.prototype=Object.assign(Object.create(st.prototype),{constructor:et,update:function(){}}),ht.prototype=Object.assign(Object.create(tt.prototype),{constructor:ht,createProxy:function(t){return new et(t)},addProxy:function(t){this.proxies.push(t)},removeProxy:function(t){var i=this.proxies.indexOf(t);i>-1&&this.proxies.splice(i,1)},collectPairs:function(){var t,i,s,e=0,h=this.proxies,n=h.length;for(this.numPairChecks=n*(n-1)>>1;e<n;)for(i=h[e++],t=e+1;t<n;)s=h[t++],!i.aabb.intersectTest(s.aabb)&&this.isAvailablePair(i.shape,s.shape)&&this.addPair(i.shape,s.shape)}}),Object.assign(nt.prototype,{SAPAxis:!0,addElements:function(t,i){if(this.numElements+2>=this.bufferSize){this.bufferSize*=2;for(var s=[],e=this.numElements;e--;)s[e]=this.elements[e]}this.elements[this.numElements++]=t,this.elements[this.numElements++]=i},removeElements:function(t,i){for(var s=-1,e=-1,h=0,n=this.numElements;h<n;h++){var a=this.elements[h];if(a==t||a==i){if(-1!=s){e=h;break}s=h}}for(h=s+1,n=e;h<n;h++)this.elements[h-1]=this.elements[h];for(h=e+1,n=this.numElements;h<n;h++)this.elements[h-2]=this.elements[h];this.elements[--this.numElements]=null,this.elements[--this.numElements]=null},sort:function(){for(var t=0,i=1;this.numElements>>i;)i++;i=i*this.numElements>>2,t=0;for(var s=!1,e=this.elements,h=1,n=this.numElements;h<n;h++){var a=e[h],o=a.value,r=e[h-1];if(r.value>o){var l=h;do{if(e[l]=r,0==--l)break;r=e[l-1]}while(r.value>o);if(e[l]=a,(t+=h-l)>i){s=!0;break}}}if(s){t=2;var c=this.stack;for(c[0]=0,c[1]=this.numElements-1;t>0;){var u=c[--t],p=c[--t],d=u-p;if(d>16){var y=p+m.floor(.5*d);for(a=e[y],e[y]=e[u],e[u]=a,o=a.value,h=p-1,l=u;;){var x,f;do{x=e[++h]}while(x.value<o);do{f=e[--l]}while(o<f.value&&l!=p);if(h>=l)break;e[h]=f,e[l]=x}e[u]=e[h],e[h]=a,h-p>u-h?(c[t++]=p,c[t++]=h-1,c[t++]=h+1,c[t++]=u):(c[t++]=h+1,c[t++]=u,c[t++]=p,c[t++]=h-1)}else for(h=p+1;h<=u;h++)if(o=(a=e[h]).value,(r=e[h-1]).value>o){l=h;do{if(e[l]=r,0==--l)break;r=e[l-1]}while(r.value>o);e[l]=a}}}},calculateTestCount:function(){for(var t=1,i=0,s=1,e=this.numElements;s<e;s++)this.elements[s].max?t--:(i+=t,t++);return i}}),ot.prototype=Object.assign(Object.create(st.prototype),{constructor:ot,isDynamic:function(){var t=this.shape.parent;return t.isDynamic&&!t.sleeping},update:function(){var t=this.aabb.elements;this.min[0].value=t[0],this.min[1].value=t[1],this.min[2].value=t[2],this.max[0].value=t[3],this.max[1].value=t[4],this.max[2].value=t[5],(1==this.belongsTo&&!this.isDynamic()||2==this.belongsTo&&this.isDynamic())&&(this.sap.removeProxy(this),this.sap.addProxy(this))}}),rt.prototype=Object.assign(Object.create(tt.prototype),{constructor:rt,createProxy:function(t){return new ot(this,t)},addProxy:function(t){var i=t;i.isDynamic()?(this.axesD[0].addElements(i.min[0],i.max[0]),this.axesD[1].addElements(i.min[1],i.max[1]),this.axesD[2].addElements(i.min[2],i.max[2]),i.belongsTo=1,this.numElementsD+=2):(this.axesS[0].addElements(i.min[0],i.max[0]),this.axesS[1].addElements(i.min[1],i.max[1]),this.axesS[2].addElements(i.min[2],i.max[2]),i.belongsTo=2,this.numElementsS+=2)},removeProxy:function(t){var i=t;if(0!=i.belongsTo){switch(i.belongsTo){case 1:this.axesD[0].removeElements(i.min[0],i.max[0]),this.axesD[1].removeElements(i.min[1],i.max[1]),this.axesD[2].removeElements(i.min[2],i.max[2]),this.numElementsD-=2;break;case 2:this.axesS[0].removeElements(i.min[0],i.max[0]),this.axesS[1].removeElements(i.min[1],i.max[1]),this.axesS[2].removeElements(i.min[2],i.max[2]),this.numElementsS-=2}i.belongsTo=0}},collectPairs:function(){if(0!=this.numElementsD){var t,i,s,e,h=this.axesD[this.index1],n=this.axesD[this.index2];h.sort(),n.sort(),h.calculateTestCount()<=n.calculateTestCount()?((n=this.axesS[this.index1]).sort(),t=h.elements,i=n.elements):((h=this.axesS[this.index2]).sort(),t=n.elements,i=h.elements,this.index1^=this.index2,this.index2^=this.index1,this.index1^=this.index2);for(var a=0,o=0;a<this.numElementsD;){var r,l;if(o==this.numElementsS)r=t[a],l=!0,a++;else{var c=t[a],u=i[o];c.value<u.value?(r=c,l=!0,a++):(r=u,l=!1,o++)}if(r.max){var p=r.pair;if(l){if(p==s){s=s.pair;continue}r=s}else{if(p==e){e=e.pair;continue}r=e}for(;r;){if((v=r.pair)==p){r.pair=v.pair;break}r=v}}else{for(var m=r.proxy.shape,d=r.min1.value,y=r.max1.value,x=r.min2.value,f=r.max2.value,v=s;null!=v;v=v.pair){var b=v.proxy.shape;this.numPairChecks++,d>v.max1.value||y<v.min1.value||x>v.max2.value||f<v.min2.value||!this.isAvailablePair(m,b)||this.addPair(m,b)}if(l){for(v=e;null!=v;v=v.pair)b=v.proxy.shape,this.numPairChecks++,d>v.max1.value||y<v.min1.value||x>v.max2.value||f<v.min2.value||!this.isAvailablePair(m,b)||this.addPair(m,b);r.pair=s,s=r}else r.pair=e,e=r}}this.index2=3^(this.index1|this.index2)}}}),Object.assign(ct.prototype,{DBVT:!0,moveLeaf:function(t){this.deleteLeaf(t),this.insertLeaf(t)},insertLeaf:function(t){if(null!=this.root){for(var i,s,e=t.aabb,h=this.root;null==h.proxy;){var n=h.child1,a=h.child2,o=h.aabb,r=n.aabb,l=a.aabb;i=o.surfaceArea(),this.aabb.combine(e,o);var c=2*(s=this.aabb.surfaceArea()),u=2*(s-i),p=u;this.aabb.combine(e,r),null!=n.proxy?p+=this.aabb.surfaceArea():p+=this.aabb.surfaceArea()-r.surfaceArea();var m=u;if(this.aabb.combine(e,l),null!=a.proxy?m+=this.aabb.surfaceArea():m+=this.aabb.surfaceArea()-l.surfaceArea(),p<m){if(c<p)break;h=n}else{if(c<m)break;h=a}}var d,y=h.parent;(d=this.numFreeNodes>0?this.freeNodes[--this.numFreeNodes]:new lt).parent=y,d.child1=t,d.child2=h,d.aabb.combine(t.aabb,h.aabb),d.height=h.height+1,h.parent=d,t.parent=d,h==this.root?this.root=d:y.child1==h?y.child1=d:y.child2=d;do{d=this.balance(d),this.fix(d),d=d.parent}while(null!=d)}else this.root=t},getBalance:function(t){return null!=t.proxy?0:t.child1.height-t.child2.height},deleteLeaf:function(t){if(t!=this.root){var i,s=t.parent;if(i=s.child1==t?s.child2:s.child1,s==this.root)return this.root=i,void(i.parent=null);var e=s.parent;i.parent=e,e.child1==s?e.child1=i:e.child2=i,this.numFreeNodes<16384&&(this.freeNodes[this.numFreeNodes++]=s);do{e=this.balance(e),this.fix(e),e=e.parent}while(null!=e)}else this.root=null},balance:function(t){var i=t.height;if(i<2)return t;var s,e=t.parent,h=t.child1,n=t.child2,a=h.height,o=n.height,r=a-o;if(r>1){var l=h.child1,c=h.child2,u=l.height,p=c.height;return u>p?(h.child2=t,t.parent=h,t.child1=c,c.parent=t,t.aabb.combine(c.aabb,n.aabb),s=p-o,t.height=p-(s&s>>31)+1,h.aabb.combine(l.aabb,t.aabb),s=u-i,h.height=u-(s&s>>31)+1):(h.child1=t,t.parent=h,t.child1=l,l.parent=t,t.aabb.combine(l.aabb,n.aabb),s=u-o,t.height=u-(s&s>>31)+1,h.aabb.combine(t.aabb,c.aabb),s=i-p,h.height=i-(s&s>>31)+1),null!=e?e.child1==t?e.child1=h:e.child2=h:this.root=h,h.parent=e,h}if(r<-1){var m=n.child1,d=n.child2,y=m.height,x=d.height;return y>x?(n.child2=t,t.parent=n,t.child2=d,d.parent=t,t.aabb.combine(h.aabb,d.aabb),s=a-x,t.height=a-(s&s>>31)+1,n.aabb.combine(m.aabb,t.aabb),s=y-i,n.height=y-(s&s>>31)+1):(n.child1=t,t.parent=n,t.child2=m,m.parent=t,t.aabb.combine(h.aabb,m.aabb),s=a-y,t.height=a-(s&s>>31)+1,n.aabb.combine(t.aabb,d.aabb),s=i-x,n.height=i-(s&s>>31)+1),null!=e?e.child1==t?e.child1=n:e.child2=n:this.root=n,n.parent=e,n}return t},fix:function(t){var i=t.child1,s=t.child2;t.aabb.combine(i.aabb,s.aabb),t.height=i.height<s.height?s.height+1:i.height+1}}),ut.prototype=Object.assign(Object.create(st.prototype),{constructor:ut,update:function(){}}),pt.prototype=Object.assign(Object.create(tt.prototype),{constructor:pt,createProxy:function(t){return new ut(t)},addProxy:function(t){this.tree.insertLeaf(t.leaf),this.leaves.push(t.leaf),this.numLeaves++},removeProxy:function(t){this.tree.deleteLeaf(t.leaf);var i=this.leaves.indexOf(t.leaf);i>-1&&(this.leaves.splice(i,1),this.numLeaves--)},collectPairs:function(){if(!(this.numLeaves<2))for(var t,i=this.numLeaves;i--;)(t=this.leaves[i]).proxy.aabb.intersectTestTwo(t.aabb)&&(t.aabb.copy(t.proxy.aabb,.1),this.tree.deleteLeaf(t),this.tree.insertLeaf(t),this.collide(t,this.tree.root))},collide:function(t,i){var s,e,h,n,a,o,r=2;for(this.stack[0]=t,this.stack[1]=i;r>0;)if(h=this.stack[--r],n=this.stack[--r],a=null!=h.proxy,o=null!=n.proxy,this.numPairChecks++,a&&o){if((s=h.proxy.shape)==(e=n.proxy.shape)||s.aabb.intersectTest(e.aabb)||!this.isAvailablePair(s,e))continue;this.addPair(s,e)}else{if(h.aabb.intersectTest(n.aabb))continue;o||!a&&h.aabb.surfaceArea()>n.aabb.surfaceArea()?(this.stack[r++]=h.child1,this.stack[r++]=n,this.stack[r++]=h.child2,this.stack[r++]=n):(this.stack[r++]=h,this.stack[r++]=n.child1,this.stack[r++]=h,this.stack[r++]=n.child2)}}}),Object.assign(mt.prototype,{CollisionDetector:!0,detectCollision:function(t,i,s){d("CollisionDetector","Inheritance error.")}}),dt.prototype=Object.assign(Object.create(mt.prototype),{constructor:dt,detectCollision:function(t,i,s){var e,h;t.id<i.id?(e=t,h=i):(e=i,h=t);var n,a,o,r,l,c,u,p,d,y,x,f,v,b,z,N,g,w,k,M,I,S,P,T,L,_,V,E,C,O,A,D,j,R,F,B=e.elements,U=h.elements,q=e.dimentions,W=h.dimentions,Y=e.position,X=h.position,H=Y.x,Z=Y.y,J=Y.z,K=X.x,G=X.y,Q=X.z,$=K-H,tt=G-Z,it=Q-J,st=e.halfWidth,et=e.halfHeight,ht=e.halfDepth,nt=h.halfWidth,at=h.halfHeight,ot=h.halfDepth,rt=q[0],lt=q[1],ct=q[2],ut=q[3],pt=q[4],mt=q[5],dt=q[6],yt=q[7],xt=q[8],ft=q[9],vt=q[10],bt=q[11],zt=q[12],Nt=q[13],gt=q[14],wt=q[15],kt=q[16],Mt=q[17],It=W[0],St=W[1],Pt=W[2],Tt=W[3],Lt=W[4],_t=W[5],Vt=W[6],Et=W[7],Ct=W[8],Ot=W[9],At=W[10],Dt=W[11],jt=W[12],Rt=W[13],Ft=W[14],Bt=W[15],Ut=W[16],qt=W[17],Wt=lt*Pt-ct*St,Yt=ct*It-rt*Pt,Xt=rt*St-lt*It,Ht=lt*_t-ct*Lt,Zt=ct*Tt-rt*_t,Jt=rt*Lt-lt*Tt,Kt=lt*Ct-ct*Et,Gt=ct*Vt-rt*Ct,Qt=rt*Et-lt*Vt,$t=pt*Pt-mt*St,ti=mt*It-ut*Pt,ii=ut*St-pt*It,si=pt*_t-mt*Lt,ei=mt*Tt-ut*_t,hi=ut*Lt-pt*Tt,ni=pt*Ct-mt*Et,ai=mt*Vt-ut*Ct,oi=ut*Et-pt*Vt,ri=yt*Pt-xt*St,li=xt*It-dt*Pt,ci=dt*St-yt*It,ui=yt*_t-xt*Lt,pi=xt*Tt-dt*_t,mi=dt*Lt-yt*Tt,di=yt*Ct-xt*Et,yi=xt*Vt-dt*Ct,xi=dt*Et-yt*Vt,fi=!1,vi=!1,bi=!1,zi=!1,Ni=!1,gi=!1,wi=!1,ki=!1,Mi=!1;if((n=(A=rt*$+lt*tt+ct*it)>0)||(A=-A),(j=rt*It+lt*St+ct*Pt)<0&&(j=-j),(R=rt*Tt+lt*Lt+ct*_t)<0&&(R=-R),(F=rt*Vt+lt*Et+ct*Ct)<0&&(F=-F),!((N=A-(D=st)-(j*nt+R*at+F*ot))>0||((a=(A=ut*$+pt*tt+mt*it)>0)||(A=-A),(j=ut*It+pt*St+mt*Pt)<0&&(j=-j),(R=ut*Tt+pt*Lt+mt*_t)<0&&(R=-R),(F=ut*Vt+pt*Et+mt*Ct)<0&&(F=-F),(g=A-(D=et)-(j*nt+R*at+F*ot))>0||((o=(A=dt*$+yt*tt+xt*it)>0)||(A=-A),(j=dt*It+yt*St+xt*Pt)<0&&(j=-j),(R=dt*Tt+yt*Lt+xt*_t)<0&&(R=-R),(F=dt*Vt+yt*Et+xt*Ct)<0&&(F=-F),(w=A-(D=ht)-(j*nt+R*at+F*ot))>0||((r=(A=It*$+St*tt+Pt*it)>0)||(A=-A),(j=It*rt+St*lt+Pt*ct)<0&&(j=-j),(R=It*ut+St*pt+Pt*mt)<0&&(R=-R),(F=It*dt+St*yt+Pt*xt)<0&&(F=-F),(k=1*(A-(D=j*st+R*et+F*ht)-nt))>0||((l=(A=Tt*$+Lt*tt+_t*it)>0)||(A=-A),(j=Tt*rt+Lt*lt+_t*ct)<0&&(j=-j),(R=Tt*ut+Lt*pt+_t*mt)<0&&(R=-R),(F=Tt*dt+Lt*yt+_t*xt)<0&&(F=-F),(M=1*(A-(D=j*st+R*et+F*ht)-at))>0||((c=(A=Vt*$+Et*tt+Ct*it)>0)||(A=-A),(j=Vt*rt+Et*lt+Ct*ct)<0&&(j=-j),(R=Vt*ut+Et*pt+Ct*mt)<0&&(R=-R),(F=Vt*dt+Et*yt+Ct*xt)<0&&(F=-F),(I=1*(A-(D=j*st+R*et+F*ht)-ot))>0))))))){if((A=Wt*Wt+Yt*Yt+Xt*Xt)>1e-5){if((u=(A=(Wt*=A=1/m.sqrt(A))*$+(Yt*=A)*tt+(Xt*=A)*it)>0)||(A=-A),(j=Wt*ut+Yt*pt+Xt*mt)<0&&(j=-j),(R=Wt*dt+Yt*yt+Xt*xt)<0&&(R=-R),D=j*et+R*ht,(j=Wt*Tt+Yt*Lt+Xt*_t)<0&&(j=-j),(R=Wt*Vt+Yt*Et+Xt*Ct)<0&&(R=-R),(S=A-D-(j*at+R*ot))>0)return}else u=!1,S=0,fi=!0;if((A=Ht*Ht+Zt*Zt+Jt*Jt)>1e-5){if((p=(A=(Ht*=A=1/m.sqrt(A))*$+(Zt*=A)*tt+(Jt*=A)*it)>0)||(A=-A),(j=Ht*ut+Zt*pt+Jt*mt)<0&&(j=-j),(R=Ht*dt+Zt*yt+Jt*xt)<0&&(R=-R),D=j*et+R*ht,(j=Ht*It+Zt*St+Jt*Pt)<0&&(j=-j),(R=Ht*Vt+Zt*Et+Jt*Ct)<0&&(R=-R),(P=A-D-(j*nt+R*ot))>0)return}else p=!1,P=0,vi=!0;if((A=Kt*Kt+Gt*Gt+Qt*Qt)>1e-5){if((d=(A=(Kt*=A=1/m.sqrt(A))*$+(Gt*=A)*tt+(Qt*=A)*it)>0)||(A=-A),(j=Kt*ut+Gt*pt+Qt*mt)<0&&(j=-j),(R=Kt*dt+Gt*yt+Qt*xt)<0&&(R=-R),D=j*et+R*ht,(j=Kt*It+Gt*St+Qt*Pt)<0&&(j=-j),(R=Kt*Tt+Gt*Lt+Qt*_t)<0&&(R=-R),(T=A-D-(j*nt+R*at))>0)return}else d=!1,T=0,bi=!0;if((A=$t*$t+ti*ti+ii*ii)>1e-5){if((y=(A=($t*=A=1/m.sqrt(A))*$+(ti*=A)*tt+(ii*=A)*it)>0)||(A=-A),(j=$t*rt+ti*lt+ii*ct)<0&&(j=-j),(R=$t*dt+ti*yt+ii*xt)<0&&(R=-R),D=j*st+R*ht,(j=$t*Tt+ti*Lt+ii*_t)<0&&(j=-j),(R=$t*Vt+ti*Et+ii*Ct)<0&&(R=-R),(L=A-D-(j*at+R*ot))>0)return}else y=!1,L=0,zi=!0;if((A=si*si+ei*ei+hi*hi)>1e-5){if((x=(A=(si*=A=1/m.sqrt(A))*$+(ei*=A)*tt+(hi*=A)*it)>0)||(A=-A),(j=si*rt+ei*lt+hi*ct)<0&&(j=-j),(R=si*dt+ei*yt+hi*xt)<0&&(R=-R),D=j*st+R*ht,(j=si*It+ei*St+hi*Pt)<0&&(j=-j),(R=si*Vt+ei*Et+hi*Ct)<0&&(R=-R),(_=A-D-(j*nt+R*ot))>0)return}else x=!1,_=0,Ni=!0;if((A=ni*ni+ai*ai+oi*oi)>1e-5){if((f=(A=(ni*=A=1/m.sqrt(A))*$+(ai*=A)*tt+(oi*=A)*it)>0)||(A=-A),(j=ni*rt+ai*lt+oi*ct)<0&&(j=-j),(R=ni*dt+ai*yt+oi*xt)<0&&(R=-R),D=j*st+R*ht,(j=ni*It+ai*St+oi*Pt)<0&&(j=-j),(R=ni*Tt+ai*Lt+oi*_t)<0&&(R=-R),(V=A-D-(j*nt+R*at))>0)return}else f=!1,V=0,gi=!0;if((A=ri*ri+li*li+ci*ci)>1e-5){if((v=(A=(ri*=A=1/m.sqrt(A))*$+(li*=A)*tt+(ci*=A)*it)>0)||(A=-A),(j=ri*rt+li*lt+ci*ct)<0&&(j=-j),(R=ri*ut+li*pt+ci*mt)<0&&(R=-R),D=j*st+R*et,(j=ri*Tt+li*Lt+ci*_t)<0&&(j=-j),(R=ri*Vt+li*Et+ci*Ct)<0&&(R=-R),(E=A-D-(j*at+R*ot))>0)return}else v=!1,E=0,wi=!0;if((A=ui*ui+pi*pi+mi*mi)>1e-5){if((b=(A=(ui*=A=1/m.sqrt(A))*$+(pi*=A)*tt+(mi*=A)*it)>0)||(A=-A),(j=ui*rt+pi*lt+mi*ct)<0&&(j=-j),(R=ui*ut+pi*pt+mi*mt)<0&&(R=-R),D=j*st+R*et,(j=ui*It+pi*St+mi*Pt)<0&&(j=-j),(R=ui*Vt+pi*Et+mi*Ct)<0&&(R=-R),(C=A-D-(j*nt+R*ot))>0)return}else b=!1,C=0,ki=!0;if((A=di*di+yi*yi+xi*xi)>1e-5){if((z=(A=(di*=A=1/m.sqrt(A))*$+(yi*=A)*tt+(xi*=A)*it)>0)||(A=-A),(j=di*rt+yi*lt+xi*ct)<0&&(j=-j),(R=di*ut+yi*pt+xi*mt)<0&&(R=-R),D=j*st+R*et,(j=di*It+yi*St+xi*Pt)<0&&(j=-j),(R=di*Tt+yi*Lt+xi*_t)<0&&(R=-R),(O=A-D-(j*nt+R*at))>0)return}else z=!1,O=0,Mi=!0;var Ii=N,Si=N,Pi=0,Ti=n;g>Si&&(Ii=g,Si=g,Pi=1,Ti=a),w>Si&&(Ii=w,Si=w,Pi=2,Ti=o),k>Si&&(Ii=k,Si=k,Pi=3,Ti=r),M>Si&&(Ii=M,Si=M,Pi=4,Ti=l),I>Si&&(Ii=I,Si=I,Pi=5,Ti=c),S-.01>Si&&!fi&&(Ii=S,Si=S-.01,Pi=6,Ti=u),P-.01>Si&&!vi&&(Ii=P,Si=P-.01,Pi=7,Ti=p),T-.01>Si&&!bi&&(Ii=T,Si=T-.01,Pi=8,Ti=d),L-.01>Si&&!zi&&(Ii=L,Si=L-.01,Pi=9,Ti=y),_-.01>Si&&!Ni&&(Ii=_,Si=_-.01,Pi=10,Ti=x),V-.01>Si&&!gi&&(Ii=V,Si=V-.01,Pi=11,Ti=f),E-.01>Si&&!wi&&(Ii=E,Si=E-.01,Pi=12,Ti=v),C-.01>Si&&!ki&&(Ii=C,Si=C-.01,Pi=13,Ti=b),O-.01>Si&&!Mi&&(Ii=O,Pi=14,Ti=z);var Li=0,_i=0,Vi=0,Ei=0,Ci=0,Oi=0,Ai=0,Di=0,ji=0,Ri=0,Fi=0,Bi=0,Ui=0,qi=0,Wi=0,Yi=0,Xi=0,Hi=0,Zi=!1;if(0==Pi?(Ti?(Ri=H+ft,Fi=Z+vt,Bi=J+bt,Li=rt,_i=lt,Vi=ct):(Ri=H-ft,Fi=Z-vt,Bi=J-bt,Li=-rt,_i=-lt,Vi=-ct),Ui=zt,qi=Nt,Wi=gt,Ei=-ut,Ci=-pt,Oi=-mt,Yi=wt,Xi=kt,Hi=Mt,Ai=-dt,Di=-yt,ji=-xt):1==Pi?(Ti?(Ri=H+zt,Fi=Z+Nt,Bi=J+gt,Li=ut,_i=pt,Vi=mt):(Ri=H-zt,Fi=Z-Nt,Bi=J-gt,Li=-ut,_i=-pt,Vi=-mt),Ui=ft,qi=vt,Wi=bt,Ei=-rt,Ci=-lt,Oi=-ct,Yi=wt,Xi=kt,Hi=Mt,Ai=-dt,Di=-yt,ji=-xt):2==Pi?(Ti?(Ri=H+wt,Fi=Z+kt,Bi=J+Mt,Li=dt,_i=yt,Vi=xt):(Ri=H-wt,Fi=Z-kt,Bi=J-Mt,Li=-dt,_i=-yt,Vi=-xt),Ui=ft,qi=vt,Wi=bt,Ei=-rt,Ci=-lt,Oi=-ct,Yi=zt,Xi=Nt,Hi=gt,Ai=-ut,Di=-pt,ji=-mt):3==Pi?(Zi=!0,Ti?(Ri=K-Ot,Fi=G-At,Bi=Q-Dt,Li=-It,_i=-St,Vi=-Pt):(Ri=K+Ot,Fi=G+At,Bi=Q+Dt,Li=It,_i=St,Vi=Pt),Ui=jt,qi=Rt,Wi=Ft,Ei=-Tt,Ci=-Lt,Oi=-_t,Yi=Bt,Xi=Ut,Hi=qt,Ai=-Vt,Di=-Et,ji=-Ct):4==Pi?(Zi=!0,Ti?(Ri=K-jt,Fi=G-Rt,Bi=Q-Ft,Li=-Tt,_i=-Lt,Vi=-_t):(Ri=K+jt,Fi=G+Rt,Bi=Q+Ft,Li=Tt,_i=Lt,Vi=_t),Ui=Ot,qi=At,Wi=Dt,Ei=-It,Ci=-St,Oi=-Pt,Yi=Bt,Xi=Ut,Hi=qt,Ai=-Vt,Di=-Et,ji=-Ct):5==Pi?(Zi=!0,Ti?(Ri=K-Bt,Fi=G-Ut,Bi=Q-qt,Li=-Vt,_i=-Et,Vi=-Ct):(Ri=K+Bt,Fi=G+Ut,Bi=Q+qt,Li=Vt,_i=Et,Vi=Ct),Ui=Ot,qi=At,Wi=Dt,Ei=-It,Ci=-St,Oi=-Pt,Yi=jt,Xi=Rt,Hi=Ft,Ai=-Tt,Di=-Lt,ji=-_t):6==Pi?(Li=Wt,_i=Yt,Vi=Xt,Ei=rt,Ci=lt,Oi=ct,Ai=It,Di=St,ji=Pt):7==Pi?(Li=Ht,_i=Zt,Vi=Jt,Ei=rt,Ci=lt,Oi=ct,Ai=Tt,Di=Lt,ji=_t):8==Pi?(Li=Kt,_i=Gt,Vi=Qt,Ei=rt,Ci=lt,Oi=ct,Ai=Vt,Di=Et,ji=Ct):9==Pi?(Li=$t,_i=ti,Vi=ii,Ei=ut,Ci=pt,Oi=mt,Ai=It,Di=St,ji=Pt):10==Pi?(Li=si,_i=ei,Vi=hi,Ei=ut,Ci=pt,Oi=mt,Ai=Tt,Di=Lt,ji=_t):11==Pi?(Li=ni,_i=ai,Vi=oi,Ei=ut,Ci=pt,Oi=mt,Ai=Vt,Di=Et,ji=Ct):12==Pi?(Li=ri,_i=li,Vi=ci,Ei=dt,Ci=yt,Oi=xt,Ai=It,Di=St,ji=Pt):13==Pi?(Li=ui,_i=pi,Vi=mi,Ei=dt,Ci=yt,Oi=xt,Ai=Tt,Di=Lt,ji=_t):14==Pi&&(Li=di,_i=yi,Vi=xi,Ei=dt,Ci=yt,Oi=xt,Ai=Vt,Di=Et,ji=Ct),Pi>5){var Ji,Ki,Gi,Qi,$i,ts,is,ss,es,hs,ns;Ti||(Li=-Li,_i=-_i,Vi=-Vi),Ki=Li*(ts=B[0])+_i*(is=B[1])+Vi*(ss=B[2]),(Ji=Li*(Gi=B[3])+_i*(Qi=B[4])+Vi*($i=B[5]))>Ki&&(Ki=Ji,ts=Gi,is=Qi,ss=$i),(Ji=Li*(Gi=B[6])+_i*(Qi=B[7])+Vi*($i=B[8]))>Ki&&(Ki=Ji,ts=Gi,is=Qi,ss=$i),(Ji=Li*(Gi=B[9])+_i*(Qi=B[10])+Vi*($i=B[11]))>Ki&&(Ki=Ji,ts=Gi,is=Qi,ss=$i),(Ji=Li*(Gi=B[12])+_i*(Qi=B[13])+Vi*($i=B[14]))>Ki&&(Ki=Ji,ts=Gi,is=Qi,ss=$i),(Ji=Li*(Gi=B[15])+_i*(Qi=B[16])+Vi*($i=B[17]))>Ki&&(Ki=Ji,ts=Gi,is=Qi,ss=$i),(Ji=Li*(Gi=B[18])+_i*(Qi=B[19])+Vi*($i=B[20]))>Ki&&(Ki=Ji,ts=Gi,is=Qi,ss=$i),(Ji=Li*(Gi=B[21])+_i*(Qi=B[22])+Vi*($i=B[23]))>Ki&&(Ki=Ji,ts=Gi,is=Qi,ss=$i),Ki=Li*(es=U[0])+_i*(hs=U[1])+Vi*(ns=U[2]),(Ji=Li*(Gi=U[3])+_i*(Qi=U[4])+Vi*($i=U[5]))<Ki&&(Ki=Ji,es=Gi,hs=Qi,ns=$i),(Ji=Li*(Gi=U[6])+_i*(Qi=U[7])+Vi*($i=U[8]))<Ki&&(Ki=Ji,es=Gi,hs=Qi,ns=$i),(Ji=Li*(Gi=U[9])+_i*(Qi=U[10])+Vi*($i=U[11]))<Ki&&(Ki=Ji,es=Gi,hs=Qi,ns=$i),(Ji=Li*(Gi=U[12])+_i*(Qi=U[13])+Vi*($i=U[14]))<Ki&&(Ki=Ji,es=Gi,hs=Qi,ns=$i),(Ji=Li*(Gi=U[15])+_i*(Qi=U[16])+Vi*($i=U[17]))<Ki&&(Ki=Ji,es=Gi,hs=Qi,ns=$i),(Ji=Li*(Gi=U[18])+_i*(Qi=U[19])+Vi*($i=U[20]))<Ki&&(Ki=Ji,es=Gi,hs=Qi,ns=$i),(Ji=Li*(Gi=U[21])+_i*(Qi=U[22])+Vi*($i=U[23]))<Ki&&(Ki=Ji,es=Gi,hs=Qi,ns=$i);var as=((Gi=es-ts)*(Ei-Ai*(j=Ei*Ai+Ci*Di+Oi*ji))+(Qi=hs-is)*(Ci-Di*j)+($i=ns-ss)*(Oi-ji*j))/(1-j*j);s.addPoint(ts+Ei*as+Li*Ii*.5,is+Ci*as+_i*Ii*.5,ss+Oi*as+Vi*Ii*.5,Li,_i,Vi,Ii,!1)}else{var os,rs,ls,cs,us,ps,ms,ds,ys,xs,fs,vs,bs,zs,Ns,gs,ws,ks,Ms,Is,Ss,Ps=1,Ts=0,Ls=0;Zi?((Ts=rt*Li+lt*_i+ct*Vi)<Ps&&(Ps=Ts,Ls=0),-Ts<Ps&&(Ps=-Ts,Ls=1),(Ts=ut*Li+pt*_i+mt*Vi)<Ps&&(Ps=Ts,Ls=2),-Ts<Ps&&(Ps=-Ts,Ls=3),(Ts=dt*Li+yt*_i+xt*Vi)<Ps&&(Ps=Ts,Ls=4),-Ts<Ps&&(Ps=-Ts,Ls=5),0==Ls?(os=B[0],rs=B[1],ls=B[2],cs=B[6],us=B[7],ps=B[8],ms=B[9],ds=B[10],ys=B[11],xs=B[3],fs=B[4],vs=B[5]):1==Ls?(os=B[15],rs=B[16],ls=B[17],cs=B[21],us=B[22],ps=B[23],ms=B[18],ds=B[19],ys=B[20],xs=B[12],fs=B[13],vs=B[14]):2==Ls?(os=B[12],rs=B[13],ls=B[14],cs=B[0],us=B[1],ps=B[2],ms=B[3],ds=B[4],ys=B[5],xs=B[15],fs=B[16],vs=B[17]):3==Ls?(os=B[21],rs=B[22],ls=B[23],cs=B[9],us=B[10],ps=B[11],ms=B[6],ds=B[7],ys=B[8],xs=B[18],fs=B[19],vs=B[20]):4==Ls?(os=B[12],rs=B[13],ls=B[14],cs=B[18],us=B[19],ps=B[20],ms=B[6],ds=B[7],ys=B[8],xs=B[0],fs=B[1],vs=B[2]):5==Ls&&(os=B[3],rs=B[4],ls=B[5],cs=U[9],us=U[10],ps=U[11],ms=B[21],ds=B[22],ys=B[23],xs=B[15],fs=B[16],vs=B[17])):((Ts=It*Li+St*_i+Pt*Vi)<Ps&&(Ps=Ts,Ls=0),-Ts<Ps&&(Ps=-Ts,Ls=1),(Ts=Tt*Li+Lt*_i+_t*Vi)<Ps&&(Ps=Ts,Ls=2),-Ts<Ps&&(Ps=-Ts,Ls=3),(Ts=Vt*Li+Et*_i+Ct*Vi)<Ps&&(Ps=Ts,Ls=4),-Ts<Ps&&(Ps=-Ts,Ls=5),0==Ls?(os=U[0],rs=U[1],ls=U[2],cs=U[6],us=U[7],ps=U[8],ms=U[9],ds=U[10],ys=U[11],xs=U[3],fs=U[4],vs=U[5]):1==Ls?(os=U[15],rs=U[16],ls=U[17],cs=U[21],us=U[22],ps=U[23],ms=U[18],ds=U[19],ys=U[20],xs=U[12],fs=U[13],vs=U[14]):2==Ls?(os=U[12],rs=U[13],ls=U[14],cs=U[0],us=U[1],ps=U[2],ms=U[3],ds=U[4],ys=U[5],xs=U[15],fs=U[16],vs=U[17]):3==Ls?(os=U[21],rs=U[22],ls=U[23],cs=U[9],us=U[10],ps=U[11],ms=U[6],ds=U[7],ys=U[8],xs=U[18],fs=U[19],vs=U[20]):4==Ls?(os=U[12],rs=U[13],ls=U[14],cs=U[18],us=U[19],ps=U[20],ms=U[6],ds=U[7],ys=U[8],xs=U[0],fs=U[1],vs=U[2]):5==Ls&&(os=U[3],rs=U[4],ls=U[5],cs=U[9],us=U[10],ps=U[11],ms=U[21],ds=U[22],ys=U[23],xs=U[15],fs=U[16],vs=U[17])),this.clipVertices1[0]=os,this.clipVertices1[1]=rs,this.clipVertices1[2]=ls,this.clipVertices1[3]=cs,this.clipVertices1[4]=us,this.clipVertices1[5]=ps,this.clipVertices1[6]=ms,this.clipVertices1[7]=ds,this.clipVertices1[8]=ys,this.clipVertices1[9]=xs,this.clipVertices1[10]=fs,this.clipVertices1[11]=vs,zs=0,j=((gs=this.clipVertices1[9])-Ri-Ui)*Ei+((ws=this.clipVertices1[10])-Fi-qi)*Ci+((ks=this.clipVertices1[11])-Bi-Wi)*Oi;for(var _s=0;_s<4;_s++)Ns=3*_s,R=((Ms=this.clipVertices1[Ns])-Ri-Ui)*Ei+((Is=this.clipVertices1[Ns+1])-Fi-qi)*Ci+((Ss=this.clipVertices1[Ns+2])-Bi-Wi)*Oi,j>0?R>0?(Ns=3*zs,zs++,this.clipVertices2[Ns]=Ms,this.clipVertices2[Ns+1]=Is,this.clipVertices2[Ns+2]=Ss):(Ns=3*zs,zs++,as=j/(j-R),this.clipVertices2[Ns]=gs+(Ms-gs)*as,this.clipVertices2[Ns+1]=ws+(Is-ws)*as,this.clipVertices2[Ns+2]=ks+(Ss-ks)*as):R>0&&(Ns=3*zs,zs++,as=j/(j-R),this.clipVertices2[Ns]=gs+(Ms-gs)*as,this.clipVertices2[Ns+1]=ws+(Is-ws)*as,this.clipVertices2[Ns+2]=ks+(Ss-ks)*as,Ns=3*zs,zs++,this.clipVertices2[Ns]=Ms,this.clipVertices2[Ns+1]=Is,this.clipVertices2[Ns+2]=Ss),gs=Ms,ws=Is,ks=Ss,j=R;if(0!=(bs=zs)){for(zs=0,Ns=3*(bs-1),j=((gs=this.clipVertices2[Ns])-Ri-Yi)*Ai+((ws=this.clipVertices2[Ns+1])-Fi-Xi)*Di+((ks=this.clipVertices2[Ns+2])-Bi-Hi)*ji,_s=0;_s<bs;_s++)Ns=3*_s,R=((Ms=this.clipVertices2[Ns])-Ri-Yi)*Ai+((Is=this.clipVertices2[Ns+1])-Fi-Xi)*Di+((Ss=this.clipVertices2[Ns+2])-Bi-Hi)*ji,j>0?R>0?(Ns=3*zs,zs++,this.clipVertices1[Ns]=Ms,this.clipVertices1[Ns+1]=Is,this.clipVertices1[Ns+2]=Ss):(Ns=3*zs,zs++,as=j/(j-R),this.clipVertices1[Ns]=gs+(Ms-gs)*as,this.clipVertices1[Ns+1]=ws+(Is-ws)*as,this.clipVertices1[Ns+2]=ks+(Ss-ks)*as):R>0&&(Ns=3*zs,zs++,as=j/(j-R),this.clipVertices1[Ns]=gs+(Ms-gs)*as,this.clipVertices1[Ns+1]=ws+(Is-ws)*as,this.clipVertices1[Ns+2]=ks+(Ss-ks)*as,Ns=3*zs,zs++,this.clipVertices1[Ns]=Ms,this.clipVertices1[Ns+1]=Is,this.clipVertices1[Ns+2]=Ss),gs=Ms,ws=Is,ks=Ss,j=R;if(0!=(bs=zs)){for(zs=0,Ns=3*(bs-1),j=((gs=this.clipVertices1[Ns])-Ri+Ui)*-Ei+((ws=this.clipVertices1[Ns+1])-Fi+qi)*-Ci+((ks=this.clipVertices1[Ns+2])-Bi+Wi)*-Oi,_s=0;_s<bs;_s++)Ns=3*_s,R=((Ms=this.clipVertices1[Ns])-Ri+Ui)*-Ei+((Is=this.clipVertices1[Ns+1])-Fi+qi)*-Ci+((Ss=this.clipVertices1[Ns+2])-Bi+Wi)*-Oi,j>0?R>0?(Ns=3*zs,zs++,this.clipVertices2[Ns]=Ms,this.clipVertices2[Ns+1]=Is,this.clipVertices2[Ns+2]=Ss):(Ns=3*zs,zs++,as=j/(j-R),this.clipVertices2[Ns]=gs+(Ms-gs)*as,this.clipVertices2[Ns+1]=ws+(Is-ws)*as,this.clipVertices2[Ns+2]=ks+(Ss-ks)*as):R>0&&(Ns=3*zs,zs++,as=j/(j-R),this.clipVertices2[Ns]=gs+(Ms-gs)*as,this.clipVertices2[Ns+1]=ws+(Is-ws)*as,this.clipVertices2[Ns+2]=ks+(Ss-ks)*as,Ns=3*zs,zs++,this.clipVertices2[Ns]=Ms,this.clipVertices2[Ns+1]=Is,this.clipVertices2[Ns+2]=Ss),gs=Ms,ws=Is,ks=Ss,j=R;if(0!=(bs=zs)){for(zs=0,Ns=3*(bs-1),j=((gs=this.clipVertices2[Ns])-Ri+Yi)*-Ai+((ws=this.clipVertices2[Ns+1])-Fi+Xi)*-Di+((ks=this.clipVertices2[Ns+2])-Bi+Hi)*-ji,_s=0;_s<bs;_s++)Ns=3*_s,R=((Ms=this.clipVertices2[Ns])-Ri+Yi)*-Ai+((Is=this.clipVertices2[Ns+1])-Fi+Xi)*-Di+((Ss=this.clipVertices2[Ns+2])-Bi+Hi)*-ji,j>0?R>0?(Ns=3*zs,zs++,this.clipVertices1[Ns]=Ms,this.clipVertices1[Ns+1]=Is,this.clipVertices1[Ns+2]=Ss):(Ns=3*zs,zs++,as=j/(j-R),this.clipVertices1[Ns]=gs+(Ms-gs)*as,this.clipVertices1[Ns+1]=ws+(Is-ws)*as,this.clipVertices1[Ns+2]=ks+(Ss-ks)*as):R>0&&(Ns=3*zs,zs++,as=j/(j-R),this.clipVertices1[Ns]=gs+(Ms-gs)*as,this.clipVertices1[Ns+1]=ws+(Is-ws)*as,this.clipVertices1[Ns+2]=ks+(Ss-ks)*as,Ns=3*zs,zs++,this.clipVertices1[Ns]=Ms,this.clipVertices1[Ns+1]=Is,this.clipVertices1[Ns+2]=Ss),gs=Ms,ws=Is,ks=Ss,j=R;if(Zi){var Vs=e;e=h,h=Vs}if(0!=(bs=zs)){var Es=e!=t;if(bs>4){Ei=os-(gs=.25*(os+cs+ms+xs)),Ci=rs-(ws=.25*(rs+us+ds+fs)),Oi=ls-(ks=.25*(ls+ps+ys+vs)),Ai=cs-gs,Di=us-ws,ji=ps-ks;var Cs=0,Os=0,As=0,Ds=0,js=-this.INF;for(Ps=this.INF,_s=0;_s<bs;_s++)this.used[_s]=!1,Ns=3*_s,(Ts=(gs=this.clipVertices1[Ns])*Ei+(ws=this.clipVertices1[Ns+1])*Ci+(ks=this.clipVertices1[Ns+2])*Oi)<Ps&&(Ps=Ts,Cs=_s),Ts>js&&(js=Ts,As=_s);for(this.used[Cs]=!0,this.used[As]=!0,js=-this.INF,Ps=this.INF,_s=0;_s<bs;_s++)this.used[_s]||(Ns=3*_s,(Ts=(gs=this.clipVertices1[Ns])*Ai+(ws=this.clipVertices1[Ns+1])*Di+(ks=this.clipVertices1[Ns+2])*ji)<Ps&&(Ps=Ts,Os=_s),Ts>js&&(js=Ts,Ds=_s));Ns=3*Cs,(Ts=((gs=this.clipVertices1[Ns])-Ri)*Li+((ws=this.clipVertices1[Ns+1])-Fi)*_i+((ks=this.clipVertices1[Ns+2])-Bi)*Vi)<0&&s.addPoint(gs,ws,ks,Li,_i,Vi,Ts,Es),Ns=3*Os,(Ts=((gs=this.clipVertices1[Ns])-Ri)*Li+((ws=this.clipVertices1[Ns+1])-Fi)*_i+((ks=this.clipVertices1[Ns+2])-Bi)*Vi)<0&&s.addPoint(gs,ws,ks,Li,_i,Vi,Ts,Es),Ns=3*As,(Ts=((gs=this.clipVertices1[Ns])-Ri)*Li+((ws=this.clipVertices1[Ns+1])-Fi)*_i+((ks=this.clipVertices1[Ns+2])-Bi)*Vi)<0&&s.addPoint(gs,ws,ks,Li,_i,Vi,Ts,Es),Ns=3*Ds,(Ts=((gs=this.clipVertices1[Ns])-Ri)*Li+((ws=this.clipVertices1[Ns+1])-Fi)*_i+((ks=this.clipVertices1[Ns+2])-Bi)*Vi)<0&&s.addPoint(gs,ws,ks,Li,_i,Vi,Ts,Es)}else for(_s=0;_s<bs;_s++)Ns=3*_s,(Ts=((gs=this.clipVertices1[Ns])-Ri)*Li+((ws=this.clipVertices1[Ns+1])-Fi)*_i+((ks=this.clipVertices1[Ns+2])-Bi)*Vi)<0&&s.addPoint(gs,ws,ks,Li,_i,Vi,Ts,Es)}}}}}}}}),yt.prototype=Object.assign(Object.create(mt.prototype),{constructor:yt,getSep:function(t,i,s,e,h){var n,a,o,r,l,c,u,p,d,y,f,v,b,z=new x,N=t.position.x,g=t.position.y,w=t.position.z,k=i.position.x,M=i.position.y,I=i.position.z,S=k-N,P=M-g,T=I-w;S*S+P*P+T*T==0&&(P=.001);var L=-S,_=-P,V=-T;this.supportPointB(t,-L,-_,-V,z);var E=z.x,C=z.y,O=z.z;this.supportPointC(i,L,_,V,z);var A=z.x,D=z.y,j=z.z,R=A-E,F=D-C,B=j-O;if(R*L+F*_+B*V<=0)return!1;if((L=F*T-B*P)*L+(_=B*S-R*T)*_+(V=R*P-F*S)*V==0)return s.set(R-S,F-P,B-T).normalize(),e.set(.5*(E+A),.5*(C+D),.5*(O+j)),!0;this.supportPointB(t,-L,-_,-V,z);var U=z.x,q=z.y,W=z.z;this.supportPointC(i,L,_,V,z);var Y=z.x,X=z.y,H=z.z,Z=Y-U,J=X-q,K=H-W;if(Z*L+J*_+K*V<=0)return!1;(L=(a=F-P)*(c=K-T)-(o=B-T)*(l=J-P))*S+(_=o*(r=Z-S)-(n=R-S)*c)*P+(V=n*l-a*r)*T>0&&(n=R,a=F,o=B,R=Z,F=J,B=K,Z=n,J=a,K=o,n=E,a=C,o=O,E=U,C=q,O=W,U=n,q=a,W=o,n=A,a=D,o=j,A=Y,D=X,j=H,Y=n,X=a,H=o,L=-L,_=-_,V=-V);for(var G=0;;){if(++G>100)return!1;this.supportPointB(t,-L,-_,-V,z);var Q=z.x,$=z.y,tt=z.z;this.supportPointC(i,L,_,V,z);var it=z.x,st=z.y,et=z.z,ht=it-Q,nt=st-$,at=et-tt;if(ht*L+nt*_+at*V<=0)return!1;if((F*at-B*nt)*S+(B*ht-R*at)*P+(R*nt-F*ht)*T<0)Z=ht,J=nt,K=at,U=Q,q=$,W=tt,Y=it,X=st,H=et,L=(a=F-P)*(c=at-T)-(o=B-T)*(l=nt-P),_=o*(r=ht-S)-(n=R-S)*c,V=n*l-a*r;else if((nt*K-at*J)*S+(at*Z-ht*K)*P+(ht*J-nt*Z)*T<0)R=ht,F=nt,B=at,E=Q,C=$,O=tt,A=it,D=st,j=et,L=(a=nt-P)*(c=K-T)-(o=at-T)*(l=J-P),_=o*(r=Z-S)-(n=ht-S)*c,V=n*l-a*r;else for(var ot=!1;;){if(L=(a=J-F)*(c=at-B)-(o=K-B)*(l=nt-F),_=o*(r=ht-R)-(n=Z-R)*c,V=n*l-a*r,(L*=u=1/m.sqrt(L*L+_*_+V*V))*R+(_*=u)*F+(V*=u)*B>=0&&!ot){var rt=(F*K-B*J)*ht+(B*Z-R*K)*nt+(R*J-F*Z)*at,lt=(nt*K-at*J)*S+(at*Z-ht*K)*P+(ht*J-nt*Z)*T,ct=(P*B-T*F)*ht+(T*R-S*B)*nt+(S*F-P*R)*at,ut=(J*B-K*F)*S+(K*R-Z*B)*P+(Z*F-J*R)*T,pt=rt+lt+ct+ut;pt<=0&&(rt=0,pt=(lt=(J*at-K*nt)*L+(K*ht-Z*at)*_+(Z*nt-J*ht)*V)+(ct=(nt*K-at*J)*L+(at*Z-ht*K)*_+(ht*J-nt*Z)*V)+(ut=(F*K-B*J)*L+(B*Z-R*K)*_+(R*J-F*Z)*V));var mt=1/pt;p=(N*rt+E*lt+U*ct+Q*ut)*mt,d=(g*rt+C*lt+q*ct+$*ut)*mt,y=(w*rt+O*lt+W*ct+tt*ut)*mt,f=(k*rt+A*lt+Y*ct+it*ut)*mt,v=(M*rt+D*lt+X*ct+st*ut)*mt,b=(I*rt+j*lt+H*ct+et*ut)*mt,ot=!0}this.supportPointB(t,-L,-_,-V,z);var dt=z.x,yt=z.y,xt=z.z;this.supportPointC(i,L,_,V,z);var ft=z.x,vt=z.y,bt=z.z,zt=ft-dt,Nt=vt-yt,gt=bt-xt,wt=-(zt*L+Nt*_+gt*V);if((zt-ht)*L+(Nt-nt)*_+(gt-at)*V<=.01||wt>=0)return!!ot&&(s.set(-L,-_,-V),e.set(.5*(p+f),.5*(d+v),.5*(y+b)),h.x=wt,!0);(Nt*B-gt*F)*S+(gt*R-zt*B)*P+(zt*F-Nt*R)*T<0?(Nt*K-gt*J)*S+(gt*Z-zt*K)*P+(zt*J-Nt*Z)*T<0?(R=zt,F=Nt,B=gt,E=dt,C=yt,O=xt,A=ft,D=vt,j=bt):(ht=zt,nt=Nt,at=gt,Q=dt,$=yt,tt=xt,it=ft,st=vt,et=bt):(Nt*at-gt*nt)*S+(gt*ht-zt*at)*P+(zt*nt-Nt*ht)*T<0?(Z=zt,J=Nt,K=gt,U=dt,q=yt,W=xt,Y=ft,X=vt,H=bt):(R=zt,F=Nt,B=gt,E=dt,C=yt,O=xt,A=ft,D=vt,j=bt)}}},supportPointB:function(t,i,s,e,h){var n,a,o,r=t.rotation.elements,l=r[0]*i+r[3]*s+r[6]*e,c=r[1]*i+r[4]*s+r[7]*e,u=r[2]*i+r[5]*s+r[8]*e,p=t.halfWidth,m=t.halfHeight,d=t.halfDepth;n=l<0?-p:p,a=c<0?-m:m,o=u<0?-d:d,l=r[0]*n+r[1]*a+r[2]*o+t.position.x,c=r[3]*n+r[4]*a+r[5]*o+t.position.y,u=r[6]*n+r[7]*a+r[8]*o+t.position.z,h.set(l,c,u)},supportPointC:function(t,i,s,e,h){var n,a,o,r=t.rotation.elements,l=r[0]*i+r[3]*s+r[6]*e,c=r[1]*i+r[4]*s+r[7]*e,u=r[2]*i+r[5]*s+r[8]*e,p=l,d=u,y=p*p+d*d,x=t.radius,f=t.halfHeight;0==y?c<0?(n=x,a=-f,o=0):(n=x,a=f,o=0):(y=t.radius/m.sqrt(y),c<0?(n=p*y,a=-f,o=d*y):(n=p*y,a=f,o=d*y)),l=r[0]*n+r[1]*a+r[2]*o+t.position.x,c=r[3]*n+r[4]*a+r[5]*o+t.position.y,u=r[6]*n+r[7]*a+r[8]*o+t.position.z,h.set(l,c,u)},detectCollision:function(t,i,s){var e,h;this.flip?(e=i,h=t):(e=t,h=i);var n=new x,a=new x,o=new x;if(this.getSep(e,h,n,a,o)){var r=e.position.x,l=e.position.y,c=e.position.z,u=h.position.x,p=h.position.y,d=h.position.z,y=e.halfWidth,f=e.halfHeight,v=e.halfDepth,b=h.halfHeight,z=h.radius,N=e.dimentions,g=N[0],w=N[1],k=N[2],M=N[3],I=N[4],S=N[5],P=N[6],T=N[7],L=N[8],_=N[9],V=N[10],E=N[11],C=N[12],O=N[13],A=N[14],D=N[15],j=N[16],R=N[17],F=h.normalDirection.x,B=h.normalDirection.y,U=h.normalDirection.z,q=h.halfDirection.x,W=h.halfDirection.y,Y=h.halfDirection.z,X=n.x,H=n.y,Z=n.z,J=X*g+H*w+Z*k,K=X*M+H*I+Z*S,G=X*P+H*T+Z*L,Q=X*F+H*B+Z*U,$=J>0,tt=K>0,it=G>0,st=Q>0;$||(J=-J),tt||(K=-K),it||(G=-G),st||(Q=-Q);var et,ht,nt,at,ot,rt,lt,ct,ut,pt,mt,dt,yt,xt,ft,vt,bt,zt,Nt,gt,wt,kt,Mt,It,St,Pt,Tt,Lt,_t,Vt,Et,Ct,Ot,At,Dt,jt,Rt,Ft,Bt,Ut,qt,Wt,Yt,Xt,Ht,Zt,Jt,Kt,Gt,Qt,$t,ti,ii,si=0;if(Q>.999?si=J>.999?J>Q?1:4:K>.999?K>Q?2:4:G>.999&&G>Q?3:4:J>.999?si=1:K>.999?si=2:G>.999&&(si=3),0==si)s.addPoint(a.x,a.y,a.z,X,H,Z,o.x,this.flip);else if(4==si){var ei,hi,ni,ai,oi,ri,li,ci,ui,pi,mi,di;st?(at=u-q,ot=p-W,rt=d-Y,X=-F,H=-B,Z=-U):(at=u+q,ot=p+W,rt=d+Y,X=F,H=B,Z=U),si=0,(Yt=g*X+w*H+k*Z)<(gt=1)&&(gt=Yt,si=0),-Yt<gt&&(gt=-Yt,si=1),(Yt=M*X+I*H+S*Z)<gt&&(gt=Yt,si=2),-Yt<gt&&(gt=-Yt,si=3),(Yt=P*X+T*H+L*Z)<gt&&(gt=Yt,si=4),-Yt<gt&&(gt=-Yt,si=5);var yi=e.elements;switch(si){case 0:ei=yi[0],hi=yi[1],ni=yi[2],ai=yi[6],oi=yi[7],ri=yi[8],li=yi[9],ci=yi[10],ui=yi[11],pi=yi[3],mi=yi[4],di=yi[5];break;case 1:ei=yi[15],hi=yi[16],ni=yi[17],ai=yi[21],oi=yi[22],ri=yi[23],li=yi[18],ci=yi[19],ui=yi[20],pi=yi[12],mi=yi[13],di=yi[14];break;case 2:ei=yi[12],hi=yi[13],ni=yi[14],ai=yi[0],oi=yi[1],ri=yi[2],li=yi[3],ci=yi[4],ui=yi[5],pi=yi[15],mi=yi[16],di=yi[17];break;case 3:ei=yi[21],hi=yi[22],ni=yi[23],ai=yi[9],oi=yi[10],ri=yi[11],li=yi[6],ci=yi[7],ui=yi[8],pi=yi[18],mi=yi[19],di=yi[20];break;case 4:ei=yi[12],hi=yi[13],ni=yi[14],ai=yi[18],oi=yi[19],ri=yi[20],li=yi[6],ci=yi[7],ui=yi[8],pi=yi[0],mi=yi[1],di=yi[2];break;case 5:ei=yi[3],hi=yi[4],ni=yi[5],ai=yi[9],oi=yi[10],ri=yi[11],li=yi[21],ci=yi[22],ui=yi[23],pi=yi[15],mi=yi[16],di=yi[17]}(Nt=X*(ei-at)+H*(hi-ot)+Z*(ni-rt))<=0&&s.addPoint(ei,hi,ni,-X,-H,-Z,Nt,this.flip),(Nt=X*(ai-at)+H*(oi-ot)+Z*(ri-rt))<=0&&s.addPoint(ai,oi,ri,-X,-H,-Z,Nt,this.flip),(Nt=X*(li-at)+H*(ci-ot)+Z*(ui-rt))<=0&&s.addPoint(li,ci,ui,-X,-H,-Z,Nt,this.flip),(Nt=X*(pi-at)+H*(mi-ot)+Z*(di-rt))<=0&&s.addPoint(pi,mi,di,-X,-H,-Z,Nt,this.flip)}else{switch(si){case 1:$?(et=r+_,ht=l+V,nt=c+E,X=g,H=w,Z=k):(et=r-_,ht=l-V,nt=c-E,X=-g,H=-w,Z=-k),Zt=M,Jt=I,Kt=S,ti=f,Gt=P,Qt=T,$t=L,ii=v;break;case 2:tt?(et=r+C,ht=l+O,nt=c+A,X=M,H=I,Z=S):(et=r-C,ht=l-O,nt=c-A,X=-M,H=-I,Z=-S),Zt=g,Jt=w,Kt=k,ti=y,Gt=P,Qt=T,$t=L,ii=v;break;case 3:it?(et=r+D,ht=l+j,nt=c+R,X=P,H=T,Z=L):(et=r-D,ht=l-j,nt=c-R,X=-P,H=-T,Z=-L),Zt=g,Jt=w,Kt=k,ti=y,Gt=M,Qt=I,$t=S,ii=f}if(at=u+(wt=(gt=X*F+H*B+Z*U)<0?b:-b)*F,ot=p+wt*B,rt=d+wt*U,Q>=.999999?(kt=-H,Mt=Z,It=X):(kt=X,Mt=H,It=Z),Pt=(wt=kt*F+Mt*B+It*U)*F-kt,Tt=wt*B-Mt,Lt=wt*U-It,0==(wt=m.sqrt(Pt*Pt+Tt*Tt+Lt*Lt)))return;if(kt=at+(Pt*=wt=z/wt),Mt=ot+(Tt*=wt),It=rt+(Lt*=wt),gt<-.96||gt>.96)lt=F*F*1.5-.5,ct=F*B*1.5-.866025403*U,ut=F*U*1.5+.866025403*B,pt=B*F*1.5+.866025403*U,mt=B*B*1.5-.5,dt=B*U*1.5-.866025403*F,yt=U*F*1.5-.866025403*B,xt=U*B*1.5+.866025403*F,ft=U*U*1.5-.5,(Ft=Zt*(kt=(vt=kt)-(Nt=X*(vt-et)+H*((bt=Mt)-ht)+Z*((zt=It)-nt))*X-et)+Jt*(Mt=bt-Nt*H-ht)+Kt*(It=zt-Nt*Z-nt))<-ti?Ft=-ti:Ft>ti&&(Ft=ti),(Wt=Gt*kt+Qt*Mt+$t*It)<-ii?Wt=-ii:Wt>ii&&(Wt=ii),vt=et+(kt=Ft*Zt+Wt*Gt),bt=ht+(Mt=Ft*Jt+Wt*Qt),zt=nt+(It=Ft*Kt+Wt*$t),s.addPoint(vt,bt,zt,X,H,Z,Nt,this.flip),bt=Pt*pt+Tt*mt+Lt*dt,zt=Pt*yt+Tt*xt+Lt*ft,(Nt=X*((vt=(Pt=vt=Pt*lt+Tt*ct+Lt*ut)+at)-et)+H*((bt=(Tt=bt)+ot)-ht)+Z*((zt=(Lt=zt)+rt)-nt))<=0&&((Ft=Zt*(kt=vt-Nt*X-et)+Jt*(Mt=bt-Nt*H-ht)+Kt*(It=zt-Nt*Z-nt))<-ti?Ft=-ti:Ft>ti&&(Ft=ti),(Wt=Gt*kt+Qt*Mt+$t*It)<-ii?Wt=-ii:Wt>ii&&(Wt=ii),vt=et+(kt=Ft*Zt+Wt*Gt),bt=ht+(Mt=Ft*Jt+Wt*Qt),zt=nt+(It=Ft*Kt+Wt*$t),s.addPoint(vt,bt,zt,X,H,Z,Nt,this.flip)),bt=Pt*pt+Tt*mt+Lt*dt,zt=Pt*yt+Tt*xt+Lt*ft,(Nt=X*((vt=(Pt=vt=Pt*lt+Tt*ct+Lt*ut)+at)-et)+H*((bt=(Tt=bt)+ot)-ht)+Z*((zt=(Lt=zt)+rt)-nt))<=0&&((Ft=Zt*(kt=vt-Nt*X-et)+Jt*(Mt=bt-Nt*H-ht)+Kt*(It=zt-Nt*Z-nt))<-ti?Ft=-ti:Ft>ti&&(Ft=ti),(Wt=Gt*kt+Qt*Mt+$t*It)<-ii?Wt=-ii:Wt>ii&&(Wt=ii),vt=et+(kt=Ft*Zt+Wt*Gt),bt=ht+(Mt=Ft*Jt+Wt*Qt),zt=nt+(It=Ft*Kt+Wt*$t),s.addPoint(vt,bt,zt,X,H,Z,Nt,this.flip));else{if(Dt=kt,gt>0?(Bt=kt+2*q,Ut=Mt+2*W,qt=It+2*Y):(Bt=kt-2*q,Ut=Mt-2*W,qt=It-2*Y),kt=(Bt-=(Wt=X*(Bt-et)+H*(Ut-ht)+Z*(qt-nt))*X)-(Dt-=(Ft=X*(Dt-et)+H*((jt=Mt)-ht)+Z*((Rt=It)-nt))*X),Mt=(Ut-=Wt*H)-(jt-=Ft*H),It=(qt-=Wt*Z)-(Rt-=Ft*Z),St=Wt-Ft,Xt=(K=(Ct=Bt-et)*Zt+(Ot=Ut-ht)*Jt+(At=qt-nt)*Kt)-ti,(Yt=(J=(_t=Dt-et)*Zt+(Vt=jt-ht)*Jt+(Et=Rt-nt)*Kt)-ti)>0){if(Xt>0)return;J=(_t=(Dt+=kt*(Ht=Yt/(Yt-Xt)))-et)*Zt+(Vt=(jt+=Mt*Ht)-ht)*Jt+(Et=(Rt+=It*Ht)-nt)*Kt,kt=Bt-Dt,Mt=Ut-jt,It=qt-Rt,St=Wt-(Ft+=St*Ht)}else Xt>0&&(K=(Ct=(Bt=Dt+kt*(Ht=Yt/(Yt-Xt)))-et)*Zt+(Ot=(Ut=jt+Mt*Ht)-ht)*Jt+(At=(qt=Rt+It*Ht)-nt)*Kt,kt=Bt-Dt,Mt=Ut-jt,It=qt-Rt,St=(Wt=Ft+St*Ht)-Ft);if(Xt=K+ti,(Yt=J+ti)<0){if(Xt<0)return;_t=(Dt+=kt*(Ht=Yt/(Yt-Xt)))-et,Vt=(jt+=Mt*Ht)-ht,Et=(Rt+=It*Ht)-nt,kt=Bt-Dt,Mt=Ut-jt,It=qt-Rt,St=Wt-(Ft+=St*Ht)}else Xt<0&&(Ct=(Bt=Dt+kt*(Ht=Yt/(Yt-Xt)))-et,Ot=(Ut=jt+Mt*Ht)-ht,At=(qt=Rt+It*Ht)-nt,kt=Bt-Dt,Mt=Ut-jt,It=qt-Rt,St=(Wt=Ft+St*Ht)-Ft);if(Xt=(K=Ct*Gt+Ot*Qt+At*$t)-ii,(Yt=(J=_t*Gt+Vt*Qt+Et*$t)-ii)>0){if(Xt>0)return;J=(_t=(Dt+=kt*(Ht=Yt/(Yt-Xt)))-et)*Gt+(Vt=(jt+=Mt*Ht)-ht)*Qt+(Et=(Rt+=It*Ht)-nt)*$t,kt=Bt-Dt,Mt=Ut-jt,It=qt-Rt,St=Wt-(Ft+=St*Ht)}else Xt>0&&(K=(Ct=(Bt=Dt+kt*(Ht=Yt/(Yt-Xt)))-et)*Gt+(Ot=(Ut=jt+Mt*Ht)-ht)*Qt+(At=(qt=Rt+It*Ht)-nt)*$t,kt=Bt-Dt,Mt=Ut-jt,It=qt-Rt,St=(Wt=Ft+St*Ht)-Ft);if(Xt=K+ii,(Yt=J+ii)<0){if(Xt<0)return;Dt+=kt*(Ht=Yt/(Yt-Xt)),jt+=Mt*Ht,Rt+=It*Ht,Ft+=St*Ht}else Xt<0&&(Bt=Dt+kt*(Ht=Yt/(Yt-Xt)),Ut=jt+Mt*Ht,qt=Rt+It*Ht,Wt=Ft+St*Ht);Ft<0&&s.addPoint(Dt,jt,Rt,X,H,Z,Ft,this.flip),Wt<0&&s.addPoint(Bt,Ut,qt,X,H,Z,Wt,this.flip)}}}}}),xt.prototype=Object.assign(Object.create(mt.prototype),{constructor:xt,getSep:function(t,i,s,e,h){var n,a,o,r,l,c,u,p,d,y,f,v,b,z=new x,N=t.position.x,g=t.position.y,w=t.position.z,k=i.position.x,M=i.position.y,I=i.position.z,S=k-N,P=M-g,T=I-w;S*S+P*P+T*T==0&&(P=.001);var L=-S,_=-P,V=-T;this.supportPoint(t,-L,-_,-V,z);var E=z.x,C=z.y,O=z.z;this.supportPoint(i,L,_,V,z);var A=z.x,D=z.y,j=z.z,R=A-E,F=D-C,B=j-O;if(R*L+F*_+B*V<=0)return!1;if((L=F*T-B*P)*L+(_=B*S-R*T)*_+(V=R*P-F*S)*V==0)return s.set(R-S,F-P,B-T).normalize(),e.set(.5*(E+A),.5*(C+D),.5*(O+j)),!0;this.supportPoint(t,-L,-_,-V,z);var U=z.x,q=z.y,W=z.z;this.supportPoint(i,L,_,V,z);var Y=z.x,X=z.y,H=z.z,Z=Y-U,J=X-q,K=H-W;if(Z*L+J*_+K*V<=0)return!1;(L=(a=F-P)*(c=K-T)-(o=B-T)*(l=J-P))*S+(_=o*(r=Z-S)-(n=R-S)*c)*P+(V=n*l-a*r)*T>0&&(n=R,a=F,o=B,R=Z,F=J,B=K,Z=n,J=a,K=o,n=E,a=C,o=O,E=U,C=q,O=W,U=n,q=a,W=o,n=A,a=D,o=j,A=Y,D=X,j=H,Y=n,X=a,H=o,L=-L,_=-_,V=-V);for(var G=0;;){if(++G>100)return!1;this.supportPoint(t,-L,-_,-V,z);var Q=z.x,$=z.y,tt=z.z;this.supportPoint(i,L,_,V,z);var it=z.x,st=z.y,et=z.z,ht=it-Q,nt=st-$,at=et-tt;if(ht*L+nt*_+at*V<=0)return!1;if((F*at-B*nt)*S+(B*ht-R*at)*P+(R*nt-F*ht)*T<0)Z=ht,J=nt,K=at,U=Q,q=$,W=tt,Y=it,X=st,H=et,L=(a=F-P)*(c=at-T)-(o=B-T)*(l=nt-P),_=o*(r=ht-S)-(n=R-S)*c,V=n*l-a*r;else if((nt*K-at*J)*S+(at*Z-ht*K)*P+(ht*J-nt*Z)*T<0)R=ht,F=nt,B=at,E=Q,C=$,O=tt,A=it,D=st,j=et,L=(a=nt-P)*(c=K-T)-(o=at-T)*(l=J-P),_=o*(r=Z-S)-(n=ht-S)*c,V=n*l-a*r;else for(var ot=!1;;){if(L=(a=J-F)*(c=at-B)-(o=K-B)*(l=nt-F),_=o*(r=ht-R)-(n=Z-R)*c,V=n*l-a*r,(L*=u=1/m.sqrt(L*L+_*_+V*V))*R+(_*=u)*F+(V*=u)*B>=0&&!ot){var rt=(F*K-B*J)*ht+(B*Z-R*K)*nt+(R*J-F*Z)*at,lt=(nt*K-at*J)*S+(at*Z-ht*K)*P+(ht*J-nt*Z)*T,ct=(P*B-T*F)*ht+(T*R-S*B)*nt+(S*F-P*R)*at,ut=(J*B-K*F)*S+(K*R-Z*B)*P+(Z*F-J*R)*T,pt=rt+lt+ct+ut;pt<=0&&(rt=0,pt=(lt=(J*at-K*nt)*L+(K*ht-Z*at)*_+(Z*nt-J*ht)*V)+(ct=(nt*K-at*J)*L+(at*Z-ht*K)*_+(ht*J-nt*Z)*V)+(ut=(F*K-B*J)*L+(B*Z-R*K)*_+(R*J-F*Z)*V));var mt=1/pt;p=(N*rt+E*lt+U*ct+Q*ut)*mt,d=(g*rt+C*lt+q*ct+$*ut)*mt,y=(w*rt+O*lt+W*ct+tt*ut)*mt,f=(k*rt+A*lt+Y*ct+it*ut)*mt,v=(M*rt+D*lt+X*ct+st*ut)*mt,b=(I*rt+j*lt+H*ct+et*ut)*mt,ot=!0}this.supportPoint(t,-L,-_,-V,z);var dt=z.x,yt=z.y,xt=z.z;this.supportPoint(i,L,_,V,z);var ft=z.x,vt=z.y,bt=z.z,zt=ft-dt,Nt=vt-yt,gt=bt-xt,wt=-(zt*L+Nt*_+gt*V);if((zt-ht)*L+(Nt-nt)*_+(gt-at)*V<=.01||wt>=0)return!!ot&&(s.set(-L,-_,-V),e.set(.5*(p+f),.5*(d+v),.5*(y+b)),h.x=wt,!0);(Nt*B-gt*F)*S+(gt*R-zt*B)*P+(zt*F-Nt*R)*T<0?(Nt*K-gt*J)*S+(gt*Z-zt*K)*P+(zt*J-Nt*Z)*T<0?(R=zt,F=Nt,B=gt,E=dt,C=yt,O=xt,A=ft,D=vt,j=bt):(ht=zt,nt=Nt,at=gt,Q=dt,$=yt,tt=xt,it=ft,st=vt,et=bt):(Nt*at-gt*nt)*S+(gt*ht-zt*at)*P+(zt*nt-Nt*ht)*T<0?(Z=zt,J=Nt,K=gt,U=dt,q=yt,W=xt,Y=ft,X=vt,H=bt):(R=zt,F=Nt,B=gt,E=dt,C=yt,O=xt,A=ft,D=vt,j=bt)}}},supportPoint:function(t,i,s,e,h){var n,a,o,r=t.rotation.elements,l=r[0]*i+r[3]*s+r[6]*e,c=r[1]*i+r[4]*s+r[7]*e,u=r[2]*i+r[5]*s+r[8]*e,p=l,d=u,y=p*p+d*d,x=t.radius,f=t.halfHeight;0==y?c<0?(n=x,a=-f,o=0):(n=x,a=f,o=0):(y=t.radius/m.sqrt(y),c<0?(n=p*y,a=-f,o=d*y):(n=p*y,a=f,o=d*y)),l=r[0]*n+r[1]*a+r[2]*o+t.position.x,c=r[3]*n+r[4]*a+r[5]*o+t.position.y,u=r[6]*n+r[7]*a+r[8]*o+t.position.z,h.set(l,c,u)},detectCollision:function(t,i,s){var e,h;t.id<i.id?(e=t,h=i):(e=i,h=t);var n,a,o,r,l,c,u,p,d,y,f,v,b,z,N,g,w,k,M,I,S,P=e.position,T=h.position,L=P.x,_=P.y,V=P.z,E=T.x,C=T.y,O=T.z,A=e.halfHeight,D=h.halfHeight,j=e.normalDirection,R=h.normalDirection,F=e.halfDirection,B=h.halfDirection,U=e.radius,q=h.radius,W=j.x,Y=j.y,X=j.z,H=R.x,Z=R.y,J=R.z,K=F.x,G=F.y,Q=F.z,$=B.x,tt=B.y,it=B.z,st=L-E,et=_-C,ht=V-O,nt=new x,at=new x,ot=new x;if(this.getSep(e,h,nt,at,ot)){var rt=nt.x*W+nt.y*Y+nt.z*X,lt=nt.x*H+nt.y*Z+nt.z*J,ct=rt>0,ut=lt>0;ct||(rt=-rt),ut||(lt=-lt);var pt,mt,dt,yt=0;(rt>.999||lt>.999)&&(yt=rt>lt?1:2);var xt,ft,vt,bt,zt,Nt,gt,wt,kt,Mt,It,St,Pt,Tt,Lt,_t,Vt=ot.x;switch(pt=nt.x,mt=nt.y,dt=nt.z,yt){case 0:s.addPoint(at.x,at.y,at.z,pt,mt,dt,Vt,!1);break;case 1:if(ct?(a=L+K,o=_+G,r=V+Q,pt=W,mt=Y,dt=X):(a=L-K,o=_-G,r=V-Q,pt=-W,mt=-Y,dt=-X),l=E+(n=(M=pt*H+mt*Z+dt*J)<0?D:-D)*H,c=C+n*Z,u=O+n*J,lt>=.999999?(p=-mt,d=dt,y=pt):(p=pt,d=mt,y=dt),st=(n=p*H+d*Z+y*J)*H-p,et=n*Z-d,ht=n*J-y,0==(n=m.sqrt(st*st+et*et+ht*ht)))break;if(p=l+(st*=n=q/n),d=c+(et*=n),y=u+(ht*=n),M<-.96||M>.96)xt=H*H*1.5-.5,ft=H*Z*1.5-.866025403*J,vt=H*J*1.5+.866025403*Z,bt=Z*H*1.5+.866025403*J,zt=Z*Z*1.5-.5,Nt=Z*J*1.5-.866025403*H,gt=J*H*1.5-.866025403*Z,wt=J*Z*1.5+.866025403*H,kt=J*J*1.5-.5,(n=(p=(Mt=p)-(Pt=pt*(Mt-a)+mt*((It=d)-o)+dt*((St=y)-r))*pt-a)*p+(d=It-Pt*mt-o)*d+(y=St-Pt*dt-r)*y)>U*U&&(p*=n=U/m.sqrt(n),d*=n,y*=n),Mt=a+p,It=o+d,St=r+y,s.addPoint(Mt,It,St,pt,mt,dt,Pt,!1),It=st*bt+et*zt+ht*Nt,St=st*gt+et*wt+ht*kt,(Pt=pt*((Mt=(st=Mt=st*xt+et*ft+ht*vt)+l)-a)+mt*((It=(et=It)+c)-o)+dt*((St=(ht=St)+u)-r))<=0&&((n=(p=Mt-Pt*pt-a)*p+(d=It-Pt*mt-o)*d+(y=St-Pt*dt-r)*y)>U*U&&(p*=n=U/m.sqrt(n),d*=n,y*=n),Mt=a+p,It=o+d,St=r+y,s.addPoint(Mt,It,St,pt,mt,dt,Pt,!1)),It=st*bt+et*zt+ht*Nt,St=st*gt+et*wt+ht*kt,(Pt=pt*((Mt=(st=Mt=st*xt+et*ft+ht*vt)+l)-a)+mt*((It=(et=It)+c)-o)+dt*((St=(ht=St)+u)-r))<=0&&((n=(p=Mt-Pt*pt-a)*p+(d=It-Pt*mt-o)*d+(y=St-Pt*dt-r)*y)>U*U&&(p*=n=U/m.sqrt(n),d*=n,y*=n),Mt=a+p,It=o+d,St=r+y,s.addPoint(Mt,It,St,pt,mt,dt,Pt,!1));else{if(f=p,M>0?(z=p+H*D*2,N=d+Z*D*2,g=y+J*D*2):(z=p-H*D*2,N=d-Z*D*2,g=y-J*D*2),(_t=(Tt=(st=a-(f-=(w=pt*(f-a)+mt*((v=d)-o)+dt*((b=y)-r))*pt))*(p=(z-=(k=pt*(z-a)+mt*(N-o)+dt*(g-r))*pt)-f)+(et=o-(v-=w*mt))*(d=(N-=k*mt)-v)+(ht=r-(b-=w*dt))*(y=(g-=k*dt)-b))*Tt-(Lt=p*p+d*d+y*y)*(st*st+et*et+ht*ht-U*U))<0)break;(S=(Tt-(_t=m.sqrt(_t)))/Lt)<(I=(Tt+_t)/Lt)&&(n=I,I=S,S=n),S>1&&(S=1),I<0&&(I=0),p=f+(z-f)*I,d=v+(N-v)*I,y=b+(g-b)*I,z=f+(z-f)*S,N=v+(N-v)*S,g=b+(g-b)*S,f=p,v=d,b=y,n=w+(k-w)*I,k=w+(k-w)*S,(w=n)<0&&s.addPoint(f,v,b,pt,mt,dt,Pt,!1),k<0&&s.addPoint(z,N,g,pt,mt,dt,Pt,!1)}break;case 2:if(ut?(l=E-$,c=C-tt,u=O-it,pt=-H,mt=-Z,dt=-J):(l=E+$,c=C+tt,u=O+it,pt=H,mt=Z,dt=J),a=L+(n=(M=pt*W+mt*Y+dt*X)<0?A:-A)*W,o=_+n*Y,r=V+n*X,rt>=.999999?(p=-mt,d=dt,y=pt):(p=pt,d=mt,y=dt),st=(n=p*W+d*Y+y*X)*W-p,et=n*Y-d,ht=n*X-y,0==(n=m.sqrt(st*st+et*et+ht*ht)))break;if(p=a+(st*=n=U/n),d=o+(et*=n),y=r+(ht*=n),M<-.96||M>.96)xt=W*W*1.5-.5,ft=W*Y*1.5-.866025403*X,vt=W*X*1.5+.866025403*Y,bt=Y*W*1.5+.866025403*X,zt=Y*Y*1.5-.5,Nt=Y*X*1.5-.866025403*W,gt=X*W*1.5-.866025403*Y,wt=X*Y*1.5+.866025403*W,kt=X*X*1.5-.5,(n=(p=(Mt=p)-(Pt=pt*(Mt-l)+mt*((It=d)-c)+dt*((St=y)-u))*pt-l)*p+(d=It-Pt*mt-c)*d+(y=St-Pt*dt-u)*y)>q*q&&(p*=n=q/m.sqrt(n),d*=n,y*=n),Mt=l+p,It=c+d,St=u+y,s.addPoint(Mt,It,St,-pt,-mt,-dt,Pt,!1),It=st*bt+et*zt+ht*Nt,St=st*gt+et*wt+ht*kt,(Pt=pt*((Mt=(st=Mt=st*xt+et*ft+ht*vt)+a)-l)+mt*((It=(et=It)+o)-c)+dt*((St=(ht=St)+r)-u))<=0&&((n=(p=Mt-Pt*pt-l)*p+(d=It-Pt*mt-c)*d+(y=St-Pt*dt-u)*y)>q*q&&(p*=n=q/m.sqrt(n),d*=n,y*=n),Mt=l+p,It=c+d,St=u+y,s.addPoint(Mt,It,St,-pt,-mt,-dt,Pt,!1)),It=st*bt+et*zt+ht*Nt,St=st*gt+et*wt+ht*kt,(Pt=pt*((Mt=(st=Mt=st*xt+et*ft+ht*vt)+a)-l)+mt*((It=(et=It)+o)-c)+dt*((St=(ht=St)+r)-u))<=0&&((n=(p=Mt-Pt*pt-l)*p+(d=It-Pt*mt-c)*d+(y=St-Pt*dt-u)*y)>q*q&&(p*=n=q/m.sqrt(n),d*=n,y*=n),Mt=l+p,It=c+d,St=u+y,s.addPoint(Mt,It,St,-pt,-mt,-dt,Pt,!1));else{if(f=p,M>0?(z=p+W*A*2,N=d+Y*A*2,g=y+X*A*2):(z=p-W*A*2,N=d-Y*A*2,g=y-X*A*2),(_t=(Tt=(st=l-(f-=(w=pt*(f-l)+mt*((v=d)-c)+dt*((b=y)-u))*pt))*(p=(z-=(k=pt*(z-l)+mt*(N-c)+dt*(g-u))*pt)-f)+(et=c-(v-=w*mt))*(d=(N-=k*mt)-v)+(ht=u-(b-=w*dt))*(y=(g-=k*dt)-b))*Tt-(Lt=p*p+d*d+y*y)*(st*st+et*et+ht*ht-q*q))<0)break;(S=(Tt-(_t=m.sqrt(_t)))/Lt)<(I=(Tt+_t)/Lt)&&(n=I,I=S,S=n),S>1&&(S=1),I<0&&(I=0),p=f+(z-f)*I,d=v+(N-v)*I,y=b+(g-b)*I,z=f+(z-f)*S,N=v+(N-v)*S,g=b+(g-b)*S,f=p,v=d,b=y,n=w+(k-w)*I,k=w+(k-w)*S,(w=n)<0&&s.addPoint(f,v,b,-pt,-mt,-dt,w,!1),k<0&&s.addPoint(z,N,g,-pt,-mt,-dt,k,!1)}}}}}),ft.prototype=Object.assign(Object.create(mt.prototype),{constructor:ft,detectCollision:function(t,i,s){var e,h;this.flip?(e=i,h=t):(e=t,h=i);var n,a,o,r,l,c=h.dimentions,u=e.position,p=u.x,d=u.y,y=u.z,x=h.position,f=x.x,v=x.y,b=x.z,z=e.radius,N=h.halfWidth,g=h.halfHeight,w=h.halfDepth,k=p-f,M=d-v,I=y-b,S=c[0]*k+c[1]*M+c[2]*I,P=c[3]*k+c[4]*M+c[5]*I,T=c[6]*k+c[7]*M+c[8]*I,L=0;S>N?S=N:S<-N?S=-N:L=1,P>g?P=g:P<-g?P=-g:L|=2,T>w?T=w:T<-w?T=-w:L|=4,7==L?(I=T<0?w+T:w-T,(k=S<0?N+S:N-S)<(M=P<0?g+P:g-P)?k<I?(r=k-N,S<0?(S=-N,k=c[0],M=c[1],I=c[2]):(S=N,k=-c[0],M=-c[1],I=-c[2])):(r=I-w,T<0?(T=-w,k=c[6],M=c[7],I=c[8]):(T=w,k=-c[6],M=-c[7],I=-c[8])):M<I?(r=M-g,P<0?(P=-g,k=c[3],M=c[4],I=c[5]):(P=g,k=-c[3],M=-c[4],I=-c[5])):(r=I-w,T<0?(T=-w,k=c[6],M=c[7],I=c[8]):(T=w,k=-c[6],M=-c[7],I=-c[8])),n=f+S*c[0]+P*c[3]+T*c[6],a=v+S*c[1]+P*c[4]+T*c[7],o=b+S*c[2]+P*c[5]+T*c[8],s.addPoint(p+z*k,d+z*M,y+z*I,k,M,I,r-z,this.flip)):(n=f+S*c[0]+P*c[3]+T*c[6],a=v+S*c[1]+P*c[4]+T*c[7],o=b+S*c[2]+P*c[5]+T*c[8],(r=(k=n-u.x)*k+(M=a-u.y)*M+(I=o-u.z)*I)>0&&r<z*z&&(k*=l=1/(r=m.sqrt(r)),M*=l,I*=l,s.addPoint(p+z*k,d+z*M,y+z*I,k,M,I,r-z,this.flip)))}}),vt.prototype=Object.assign(Object.create(mt.prototype),{constructor:vt,detectCollision:function(t,i,s){var e,h;this.flip?(e=i,h=t):(e=t,h=i);var n=e.position,a=n.x,o=n.y,r=n.z,l=h.position,c=l.x,u=l.y,p=l.z,d=h.normalDirection.x,y=h.normalDirection.y,x=h.normalDirection.z,f=e.radius,v=h.radius,b=f+v,z=h.halfHeight,N=a-c,g=o-u,w=r-p,k=N*d+g*y+w*x;if(!(k<-z-f||k>z+f)){var M,I=c+k*d,S=u+k*y,P=p+k*x,T=a-I,L=o-S,_=r-P,V=T*T+L*L+_*_;V>b*b||(V>v*v&&(T*=V=v/m.sqrt(V),L*=V,_*=V),k<-z?k=-z:k>z&&(k=z),(V=(N=(I=c+k*d+T)-a)*N+(g=(S=u+k*y+L)-o)*g+(w=(P=p+k*x+_)-r)*w)>0&&V<f*f&&(N*=M=1/(V=m.sqrt(V)),g*=M,w*=M,s.addPoint(a+N*f,o+g*f,r+w*f,N,g,w,V-f,this.flip)))}}}),bt.prototype=Object.assign(Object.create(mt.prototype),{constructor:bt,detectCollision:function(t,i,s){var e=t,h=i,n=e.position,a=h.position,o=a.x-n.x,r=a.y-n.y,l=a.z-n.z,c=o*o+r*r+l*l,u=e.radius,p=u+h.radius;if(c>0&&c<p*p){var d=1/(c=m.sqrt(c));o*=d,r*=d,l*=d,s.addPoint(n.x+o*u,n.y+r*u,n.z+l*u,o,r,l,c-p,!1)}}}),zt.prototype=Object.assign(Object.create(mt.prototype),{constructor:zt,detectCollision:function(t,i,s){var e,h=this.n,n=this.p,a=this.flip?i:t,o=this.flip?t:i,r=a.radius;h.sub(a.position,o.position),h.x*=o.normal.x,h.y*=o.normal.y,h.z*=o.normal.z,(e=h.lengthSq())>0&&e<r*r&&(e=m.sqrt(e),h.copy(o.normal).negate(),n.copy(a.position).addScaledVector(h,r),s.addPointVec(n,h,e-r,this.flip))}}),Nt.prototype=Object.assign(Object.create(mt.prototype),{constructor:Nt,detectCollision:function(t,i,s){var e,h=this.n,n=this.p,a=this.cc,o=this.flip?i:t,r=this.flip?t:i,l=o.dimentions,c=o.halfWidth,u=o.halfHeight,p=o.halfDepth,d=0;this.dix.set(l[0],l[1],l[2]),this.diy.set(l[3],l[4],l[5]),this.diz.set(l[6],l[7],l[8]),h.sub(o.position,r.position),h.x*=r.normal.x,h.y*=r.normal.y,h.z*=r.normal.z,a.set(m.dotVectors(this.dix,h),m.dotVectors(this.diy,h),m.dotVectors(this.diz,h)),a.x>c?a.x=c:a.x<-c?a.x=-c:d=1,a.y>u?a.y=u:a.y<-u?a.y=-u:d|=2,a.z>p?a.z=p:a.z<-p?a.z=-p:d|=4,7===d&&(h.set(a.x<0?c+a.x:c-a.x,a.y<0?u+a.y:u-a.y,a.z<0?p+a.z:p-a.z),h.x<h.y?h.x<h.z?(e=h.x-c,a.x<0?(a.x=-c,h.copy(this.dix)):(a.x=c,h.subEqual(this.dix))):(e=h.z-p,a.z<0?(a.z=-p,h.copy(this.diz)):(a.z=p,h.subEqual(this.diz))):h.y<h.z?(e=h.y-u,a.y<0?(a.y=-u,h.copy(this.diy)):(a.y=u,h.subEqual(this.diy))):(e=h.z-p,a.z<0?(a.z=-p,h.copy(this.diz)):(a.z=p,h.subEqual(this.diz))),n.copy(r.position).addScaledVector(h,1),s.addPointVec(n,h,e,this.flip))}}),Object.assign(gt.prototype,{World:!0,play:function(){if(null===this.timer){var t=this;this.timer=setInterval((function(){t.step()}),this.timerate)}},stop:function(){null!==this.timer&&(clearInterval(this.timer),this.timer=null)},setGravity:function(t){this.gravity.fromArray(t)},getInfo:function(){return this.isStat?this.performance.show():""},clear:function(){for(this.stop(),this.preLoop=null,this.postLoop=null,this.randX=65535;null!==this.joints;)this.removeJoint(this.joints);for(;null!==this.contacts;)this.removeContact(this.contacts);for(;null!==this.rigidBodies;)this.removeRigidBody(this.rigidBodies)},addRigidBody:function(t){t.parent&&d("World","It is not possible to be added to more than one world one of the rigid body"),t.setParent(this);for(var i=t.shapes;null!==i;i=i.next)this.addShape(i);null!==this.rigidBodies&&((this.rigidBodies.prev=t).next=this.rigidBodies),this.rigidBodies=t,this.numRigidBodies++},removeRigidBody:function(t){var i=t;if(i.parent===this){i.awake();for(var s=i.jointLink;null!=s;){var e=s.joint;s=s.next,this.removeJoint(e)}for(var h=t.shapes;null!==h;h=h.next)this.removeShape(h);var n=i.prev,a=i.next;null!==n&&(n.next=a),null!==a&&(a.prev=n),this.rigidBodies==i&&(this.rigidBodies=a),i.prev=null,i.next=null,i.parent=null,this.numRigidBodies--}},getByName:function(t){for(var i=this.rigidBodies;null!==i;){if(i.name===t)return i;i=i.next}for(var s=this.joints;null!==s;){if(s.name===t)return s;s=s.next}return null},addShape:function(t){t.parent&&t.parent.parent||d("World","It is not possible to be added alone to shape world"),t.proxy=this.broadPhase.createProxy(t),t.updateProxy(),this.broadPhase.addProxy(t.proxy)},removeShape:function(t){this.broadPhase.removeProxy(t.proxy),t.proxy=null},addJoint:function(t){t.parent&&d("World","It is not possible to be added to more than one world one of the joint"),null!=this.joints&&((this.joints.prev=t).next=this.joints),this.joints=t,t.setParent(this),this.numJoints++,t.awake(),t.attach()},removeJoint:function(t){var i=t,s=i.prev,e=i.next;null!==s&&(s.next=e),null!==e&&(e.prev=s),this.joints==i&&(this.joints=e),i.prev=null,i.next=null,this.numJoints--,i.awake(),i.detach(),i.parent=null},addContact:function(t,i){var s;null!==this.unusedContacts?(s=this.unusedContacts,this.unusedContacts=this.unusedContacts.next):s=new G,s.attach(t,i),s.detector=this.detectors[t.type][i.type],this.contacts&&((this.contacts.prev=s).next=this.contacts),this.contacts=s,this.numContacts++},removeContact:function(t){var i=t.prev,s=t.next;s&&(s.prev=i),i&&(i.next=s),this.contacts==t&&(this.contacts=s),t.prev=null,t.next=null,t.detach(),t.next=this.unusedContacts,this.unusedContacts=t,this.numContacts--},getContact:function(t,i){var s,e;t=t.constructor===Q?t.name:t,i=i.constructor===Q?i.name:i;for(var h=this.contacts;null!==h;){if(s=h.body1.name,e=h.body2.name,s===t&&e===i||e===t&&s===i)return h.touching?h:null;h=h.next}return null},checkContact:function(t,i){for(var s,e,h=this.contacts;null!==h;){if(s=h.body1.name||" ",e=h.body2.name||" ",s==t&&e==i||e==t&&s==i)return!!h.touching;h=h.next}},callSleep:function(t){return!(!t.allowSleep||t.linearVelocity.lengthSq()>.04||t.angularVelocity.lengthSq()>.25)},step:function(){var t=this.isStat;t&&this.performance.setTime(0);for(var i=this.rigidBodies;null!==i;)i.addedToIsland=!1,i.sleeping&&i.testWakeUp(),i=i.next;t&&this.performance.setTime(1),this.broadPhase.detectPairs();for(var s=this.broadPhase.pairs,e=this.broadPhase.numPairs;e--;){var h,n,a,o=s[e];o.shape1.id<o.shape2.id?(h=o.shape1,n=o.shape2):(h=o.shape2,n=o.shape1),a=h.numContacts<n.numContacts?h.contactLink:n.contactLink;for(var r=!1;a;){if((N=a.contact).shape1==h&&N.shape2==n){N.persisting=!0,r=!0;break}a=a.next}r||this.addContact(h,n)}for(t&&this.performance.calcBroadPhase(),this.numContactPoints=0,N=this.contacts;null!==N;)if(N.persisting||!N.shape1.aabb.intersectTest(N.shape2.aabb)){var l=N.body1,c=N.body2;(l.isDynamic&&!l.sleeping||c.isDynamic&&!c.sleeping)&&N.updateManifold(),this.numContactPoints+=N.manifold.numPoints,N.persisting=!1,N.constraint.addedToIsland=!1,N=N.next}else{var u=N.next;this.removeContact(N),N=u}t&&this.performance.calcNarrowPhase();var p,m,d=1/this.timeStep;for(p=this.joints;null!==p;p=p.next)p.addedToIsland=!1;this.islandRigidBodies=[],this.islandConstraints=[],this.islandStack=[],t&&this.performance.setTime(1),this.numIslands=0;for(var y=this.rigidBodies;null!==y;y=y.next)if(!(y.addedToIsland||y.isStatic||y.sleeping))if(y.isLonely())y.isDynamic&&y.linearVelocity.addScaledVector(this.gravity,this.timeStep),this.callSleep(y)?(y.sleepTime+=this.timeStep,y.sleepTime>.5?y.sleep():y.updatePosition(this.timeStep)):(y.sleepTime=0,y.updatePosition(this.timeStep)),this.numIslands++;else{var f=0,v=0,b=1;this.islandStack[0]=y,y.addedToIsland=!0;do{if(i=this.islandStack[--b],this.islandStack[b]=null,i.sleeping=!1,this.islandRigidBodies[f++]=i,!i.isStatic){for(var z=i.contactLink;null!==z;z=z.next){var N;!(m=(N=z.contact).constraint).addedToIsland&&N.touching&&(this.islandConstraints[v++]=m,m.addedToIsland=!0,(u=z.body).addedToIsland||(this.islandStack[b++]=u,u.addedToIsland=!0))}for(var g=i.jointLink;null!==g;g=g.next)(m=g.joint).addedToIsland||(this.islandConstraints[v++]=m,m.addedToIsland=!0,!(u=g.body).addedToIsland&&u.isDynamic&&(this.islandStack[b++]=u,u.addedToIsland=!0))}}while(0!=b);for(var w=(new x).addScaledVector(this.gravity,this.timeStep),k=f;k--;)(i=this.islandRigidBodies[k]).isDynamic&&i.linearVelocity.addEqual(w);if(this.enableRandomizer)for(k=v;k--;)if(0!==k){var M=(this.randX=this.randX*this.randA+this.randB&2147483647)/2147483648*k|0;m=this.islandConstraints[k],this.islandConstraints[k]=this.islandConstraints[M],this.islandConstraints[M]=m}for(k=v;k--;)this.islandConstraints[k].preSolve(this.timeStep,d);for(var I=this.numIterations;I--;)for(k=v;k--;)this.islandConstraints[k].solve();for(k=v;k--;)this.islandConstraints[k].postSolve(),this.islandConstraints[k]=null;var S=10;for(k=f;k--;)i=this.islandRigidBodies[k],this.callSleep(i)?(i.sleepTime+=this.timeStep,i.sleepTime<S&&(S=i.sleepTime)):(i.sleepTime=0,S=0);if(S>.5)for(k=f;k--;)this.islandRigidBodies[k].sleep(),this.islandRigidBodies[k]=null;else for(k=f;k--;)this.islandRigidBodies[k].updatePosition(this.timeStep),this.islandRigidBodies[k]=null;this.numIslands++}t&&this.performance.calcEnd(),null!==this.postLoop&&this.postLoop()},remove:function(t){},add:function(t){var i=(t=t||{}).type||"box";return i.constructor===String&&(i=[i]),"joint"===i[0].substring(0,5)?this.initJoint(i[0],t):this.initBody(i,t)},initBody:function(t,i){var s=this.invScale,e=i.move||!1,h=i.kinematic||!1,n=i.pos||[0,0,0];n=n.map((function(t){return t*s}));var a=i.posShape||[0,0,0];a=a.map((function(t){return t*s}));var o=i.rot||[0,0,0];o=o.map((function(t){return t*m.degtorad}));var r=i.rotShape;r=o.map((function(t){return t*m.degtorad}));var l=void 0===i.size?[1,1,1]:i.size;1===l.length&&(l[1]=l[0]),2===l.length&&(l[2]=l[0]),l=l.map((function(t){return t*s}));var c=new S;void 0!==i.density&&(c.density=i.density),void 0!==i.friction&&(c.friction=i.friction),void 0!==i.restitution&&(c.restitution=i.restitution),void 0!==i.belongsTo&&(c.belongsTo=i.belongsTo),void 0!==i.collidesWith&&(c.collidesWith=i.collidesWith),void 0!==i.config&&(void 0!==i.config[0]&&(c.density=i.config[0]),void 0!==i.config[1]&&(c.friction=i.config[1]),void 0!==i.config[2]&&(c.restitution=i.config[2]),void 0!==i.config[3]&&(c.belongsTo=i.config[3]),void 0!==i.config[4]&&(c.collidesWith=i.config[4]));for(var u,p,d=new Q(new x(n[0],n[1],n[2]),(new f).setFromEuler(o[0],o[1],o[2])),y=0;y<t.length;y++){switch(void 0!==a[p=3*y]&&c.relativePosition.set(a[p],a[p+1],a[p+2]),void 0!==r[p]&&c.relativeRotation.setQuat((new f).setFromEuler(r[p],r[p+1],r[p+2])),t[y]){case"sphere":u=new w(c,l[p]);break;case"cylinder":u=new k(c,l[p],l[p+1]);break;case"box":u=new g(c,l[p],l[p+1],l[p+2]);break;case"plane":u=new M(c)}d.addShape(u)}return i.neverSleep||h?d.allowSleep=!1:d.allowSleep=!0,d.isKinematic=h,e?i.massPos||i.massRot?d.setupMass(1,!1):d.setupMass(1,!0):d.setupMass(2),void 0!==i.name&&(d.name=i.name),this.addRigidBody(d),e&&(i.sleep?d.sleep():d.awake()),d},initJoint:function(t,i){var s,e,h=this.invScale,n=i.axe1||[1,0,0],a=i.axe2||[1,0,0],o=i.pos1||[0,0,0],r=i.pos2||[0,0,0];o=o.map((function(t){return t*h})),r=r.map((function(t){return t*h})),"jointDistance"===t?(s=i.min||0,e=i.max||10,s*=h,e*=h):(s=i.min||57.29578,e=i.max||0,s*=m.degtorad,e*=m.degtorad);var l=i.limit||null,c=i.spring||null,u=i.motor||null,p=new q;p.scale=this.scale,p.invScale=this.invScale,p.allowCollision=i.collision||!1,p.localAxis1.set(n[0],n[1],n[2]),p.localAxis2.set(a[0],a[1],a[2]),p.localAnchorPoint1.set(o[0],o[1],o[2]),p.localAnchorPoint2.set(r[0],r[1],r[2]);var y,x=null,f=null;if(void 0===i.body1||void 0===i.body2)return d("World","Can't add joint if attach rigidbodys not define !");if(i.body1.constructor===String||i.body1.constructor===Number?x=this.getByName(i.body1):i.body1.constructor===Q&&(x=i.body1),i.body2.constructor===String||i.body2.constructor===Number?f=this.getByName(i.body2):i.body2.constructor===Q&&(f=i.body2),null===x||null===f)return d("World","Can't add joint attach rigidbodys not find !");switch(p.body1=x,p.body2=f,t){case"jointDistance":y=new D(p,s,e),null!==c&&y.limitMotor.setSpring(c[0],c[1]),null!==u&&y.limitMotor.setMotor(u[0],u[1]);break;case"jointHinge":case"joint":y=new C(p,s,e),null!==c&&y.limitMotor.setSpring(c[0],c[1]),null!==u&&y.limitMotor.setMotor(u[0],u[1]);break;case"jointPrisme":y=new F(p,s,e);break;case"jointSlide":y=new B(p,s,e);break;case"jointBall":y=new O(p);break;case"jointWheel":y=new U(p),null!==l&&y.rotationalLimitMotor1.setLimit(l[0],l[1]),null!==c&&y.rotationalLimitMotor1.setSpring(c[0],c[1]),null!==u&&y.rotationalLimitMotor1.setMotor(u[0],u[1])}return y.name=i.name||"",this.addJoint(y),y}}),t.Math=m,t.Vec3=x,t.Quat=f,t.Mat33=v,t.Shape=N,t.Box=g,t.Sphere=w,t.Cylinder=k,t.Plane=M,t.Particle=I,t.ShapeConfig=S,t.LimitMotor=P,t.HingeJoint=C,t.BallAndSocketJoint=O,t.DistanceJoint=D,t.PrismaticJoint=F,t.SliderJoint=B,t.WheelJoint=U,t.JointConfig=q,t.RigidBody=Q,t.World=gt,t.REVISION=a,t.BR_NULL=o,t.BR_BRUTE_FORCE=r,t.BR_SWEEP_AND_PRUNE=l,t.BR_BOUNDING_VOLUME_TREE=c,t.BODY_NULL=0,t.BODY_DYNAMIC=1,t.BODY_STATIC=2,t.BODY_KINEMATIC=3,t.BODY_GHOST=4,t.SHAPE_NULL=u,t.SHAPE_SPHERE=1,t.SHAPE_BOX=2,t.SHAPE_CYLINDER=3,t.SHAPE_PLANE=4,t.SHAPE_PARTICLE=5,t.SHAPE_TETRA=6,t.JOINT_NULL=p,t.JOINT_DISTANCE=1,t.JOINT_BALL_AND_SOCKET=2,t.JOINT_HINGE=3,t.JOINT_WHEEL=4,t.JOINT_SLIDER=5,t.JOINT_PRISMATIC=6,t.AABB_PROX=.005,t.printError=d,t.InfoDisplay=y,Object.defineProperty(t,"__esModule",{value:!0})})),function(t,i,s){"undefined"!=typeof module&&module.exports?module.exports=s():"function"==typeof define&&define.amd?define(s):i.h337=s()}(0,this,(function(){var t={defaultRadius:40,defaultRenderer:"canvas2d",defaultGradient:{.25:"rgb(0,0,255)",.55:"rgb(0,255,0)",.85:"yellow",1:"rgb(255,0,0)"},defaultMaxOpacity:1,defaultMinOpacity:0,defaultBlur:.85,defaultXField:"x",defaultYField:"y",defaultValueField:"value",plugins:{}},i=function(){var i=function(t){this._coordinator={},this._data=[],this._radi=[],this._min=10,this._max=1,this._xField=t.xField||t.defaultXField,this._yField=t.yField||t.defaultYField,this._valueField=t.valueField||t.defaultValueField,t.radius&&(this._cfgRadius=t.radius)},s=t.defaultRadius;return i.prototype={_organiseData:function(t,i){var e=t[this._xField],h=t[this._yField],n=this._radi,a=this._data,o=this._max,r=this._min,l=t[this._valueField]||1,c=t.radius||this._cfgRadius||s;a[e]||(a[e]=[],n[e]=[]),a[e][h]?a[e][h]+=l:(a[e][h]=l,n[e][h]=c);var u=a[e][h];return u>o?(i?this.setDataMax(u):this._max=u,!1):u<r?(i?this.setDataMin(u):this._min=u,!1):{x:e,y:h,value:l,radius:c,min:r,max:o}},_unOrganizeData:function(){var t=[],i=this._data,s=this._radi;for(var e in i)for(var h in i[e])t.push({x:e,y:h,radius:s[e][h],value:i[e][h]});return{min:this._min,max:this._max,data:t}},_onExtremaChange:function(){this._coordinator.emit("extremachange",{min:this._min,max:this._max})},addData:function(){if(arguments[0].length>0)for(var t=arguments[0],i=t.length;i--;)this.addData.call(this,t[i]);else{var s=this._organiseData(arguments[0],!0);s&&(0===this._data.length&&(this._min=this._max=s.value),this._coordinator.emit("renderpartial",{min:this._min,max:this._max,data:[s]}))}return this},setData:function(t){var i=t.data,s=i.length;this._data=[],this._radi=[];for(var e=0;e<s;e++)this._organiseData(i[e],!1);return this._max=t.max,this._min=t.min||0,this._onExtremaChange(),this._coordinator.emit("renderall",this._getInternalData()),this},removeData:function(){},setDataMax:function(t){return this._max=t,this._onExtremaChange(),this._coordinator.emit("renderall",this._getInternalData()),this},setDataMin:function(t){return this._min=t,this._onExtremaChange(),this._coordinator.emit("renderall",this._getInternalData()),this},setCoordinator:function(t){this._coordinator=t},_getInternalData:function(){return{max:this._max,min:this._min,data:this._data,radi:this._radi}},getData:function(){return this._unOrganizeData()}},i}(),s=function(){var t=function(t){var i=t.gradient||t.defaultGradient,s=document.createElement("canvas"),e=s.getContext("2d");s.width=256,s.height=1;var h=e.createLinearGradient(0,0,256,1);for(var n in i)h.addColorStop(n,i[n]);return e.fillStyle=h,e.fillRect(0,0,256,1),e.getImageData(0,0,256,1).data},i=function(t,i){var s=document.createElement("canvas"),e=s.getContext("2d"),h=t,n=t;if(s.width=s.height=2*t,1==i)e.beginPath(),e.arc(h,n,t,0,2*Math.PI,!1),e.fillStyle="rgba(0,0,0,1)",e.fill();else{var a=e.createRadialGradient(h,n,t*i,h,n,t);a.addColorStop(0,"rgba(0,0,0,1)"),a.addColorStop(1,"rgba(0,0,0,0)"),e.fillStyle=a,e.fillRect(0,0,2*t,2*t)}return s};function s(i){var s=this.shadowCanvas=document.createElement("canvas"),e=this.canvas=i.canvas||document.createElement("canvas");this._renderBoundaries=[1e4,1e4,0,0];e.className="heatmap-canvas",this._width=e.width=s.width=i.width,this._height=e.height=s.height=i.height,this.shadowCtx=s.getContext("2d"),this.ctx=e.getContext("2d"),e.style.cssText=s.style.cssText="position:absolute;left:0;top:0;",this._palette=t(i),this._templates={},this._setStyles(i)}return s.prototype={renderPartial:function(t){t.data.length>0&&(this._drawAlpha(t),this._colorize())},renderAll:function(t){this._clear(),t.data.length>0&&(this._drawAlpha(function(t){for(var i=[],s=t.min,e=t.max,h=t.radi,n=(t=t.data,Object.keys(t)),a=n.length;a--;)for(var o=n[a],r=Object.keys(t[o]),l=r.length;l--;){var c=r[l],u=t[o][c],p=h[o][c];i.push({x:o,y:c,value:u,radius:p})}return{min:s,max:e,data:i}}(t)),this._colorize())},_updateGradient:function(i){this._palette=t(i)},updateConfig:function(t){t.gradient&&this._updateGradient(t),this._setStyles(t)},setDimensions:function(t,i){this._width=t,this._height=i,this.canvas.width=this.shadowCanvas.width=t,this.canvas.height=this.shadowCanvas.height=i},_clear:function(){this.shadowCtx.clearRect(0,0,this._width,this._height),this.ctx.clearRect(0,0,this._width,this._height)},_setStyles:function(t){this._blur=0==t.blur?0:t.blur||t.defaultBlur,t.backgroundColor&&(this.canvas.style.backgroundColor=t.backgroundColor),this._width=this.canvas.width=this.shadowCanvas.width=t.width||this._width,this._height=this.canvas.height=this.shadowCanvas.height=t.height||this._height,this._opacity=255*(t.opacity||0),this._maxOpacity=255*(t.maxOpacity||t.defaultMaxOpacity),this._minOpacity=255*(t.minOpacity||t.defaultMinOpacity),this._useGradientOpacity=!!t.useGradientOpacity},_drawAlpha:function(t){for(var s=this._min=t.min,e=this._max=t.max,h=(t=t.data||[]).length,n=1-this._blur;h--;){var a,o=t[h],r=o.x,l=o.y,c=o.radius,u=Math.min(o.value,e),p=r-c,m=l-c,d=this.shadowCtx;this._templates[c]?a=this._templates[c]:this._templates[c]=a=i(c,n);var y=(u-s)/(e-s);d.globalAlpha=y<.01?.01:y,d.drawImage(a,p,m),p<this._renderBoundaries[0]&&(this._renderBoundaries[0]=p),m<this._renderBoundaries[1]&&(this._renderBoundaries[1]=m),p+2*c>this._renderBoundaries[2]&&(this._renderBoundaries[2]=p+2*c),m+2*c>this._renderBoundaries[3]&&(this._renderBoundaries[3]=m+2*c)}},_colorize:function(){var t=this._renderBoundaries[0],i=this._renderBoundaries[1],s=this._renderBoundaries[2]-t,e=this._renderBoundaries[3]-i,h=this._width,n=this._height,a=this._opacity,o=this._maxOpacity,r=this._minOpacity,l=this._useGradientOpacity;t<0&&(t=0),i<0&&(i=0),t+s>h&&(s=h-t),i+e>n&&(e=n-i);for(var c=this.shadowCtx.getImageData(t,i,s,e),u=c.data,p=u.length,m=this._palette,d=3;d<p;d+=4){var y,x=u[d],f=4*x;if(f)y=a>0?a:x<o?x<r?r:x:o,u[d-3]=m[f],u[d-2]=m[f+1],u[d-1]=m[f+2],u[d]=l?m[f+3]:y}c.data=u,this.ctx.putImageData(c,t,i),this._renderBoundaries=[1e3,1e3,0,0]},getValueAt:function(t){var i=this.shadowCtx.getImageData(t.x,t.y,1,1).data[3],s=this._max,e=this._min;return Math.abs(s-e)*(i/255)|0},getDataURL:function(){return this.canvas.toDataURL()}},s}(),e=function(){var i=!1;return"canvas2d"===t.defaultRenderer&&(i=s),i}(),h=function(){for(var t={},i=arguments.length,s=0;s<i;s++){var e=arguments[s];for(var h in e)t[h]=e[h]}return t},n=function(){var s=function(){function t(){this.cStore={}}return t.prototype={on:function(t,i,s){var e=this.cStore;e[t]||(e[t]=[]),e[t].push((function(t){return i.call(s,t)}))},emit:function(t,i){var s=this.cStore;if(s[t])for(var e=s[t].length,h=0;h<e;h++){(0,s[t][h])(i)}}},t}();function n(){var n=this._config=h(t,arguments[0]||{});if(this._coordinator=new s,n.plugin){var a=n.plugin;if(!t.plugins[a])throw new Error("Plugin '"+a+"' not found. Maybe it was not registered.");var o=t.plugins[a];this._renderer=new o.renderer(n),this._store=new o.store(n)}else this._renderer=new e(n),this._store=new i(n);!function(t){var i=t._renderer,s=t._coordinator,e=t._store;s.on("renderpartial",i.renderPartial,i),s.on("renderall",i.renderAll,i),s.on("extremachange",(function(i){t._config.onExtremaChange&&t._config.onExtremaChange({min:i.min,max:i.max,gradient:t._config.gradient||t._config.defaultGradient})})),e.setCoordinator(s)}(this)}return n.prototype={addData:function(){return this._store.addData.apply(this._store,arguments),this},removeData:function(){return this._store.removeData&&this._store.removeData.apply(this._store,arguments),this},setData:function(){return this._store.setData.apply(this._store,arguments),this},setDataMax:function(){return this._store.setDataMax.apply(this._store,arguments),this},setDataMin:function(){return this._store.setDataMin.apply(this._store,arguments),this},configure:function(t){return this._config=h(this._config,t),this._renderer.updateConfig(this._config),this._coordinator.emit("renderall",this._store._getInternalData()),this},repaint:function(){return this._coordinator.emit("renderall",this._store._getInternalData()),this},getData:function(){return this._store.getData()},getDataURL:function(){return this._renderer.getDataURL()},getValueAt:function(t){return this._store.getValueAt?this._store.getValueAt(t):this._renderer.getValueAt?this._renderer.getValueAt(t):null}},n}(),a={create:function(t){return new n(t)},register:function(i,s){t.plugins[i]=s}};return a}));